# Copyright 2024 Ingemar Hedvall # SPDX-License-Identifier: MIT cmake_minimum_required(VERSION 3.20) include(CMakePrintHelpers) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) # optional, ensure standard is supported set(CMAKE_CXX_EXTENSIONS OFF) # optional, keep compiler extensions off set(CMAKE_DEBUG_POSTFIX "") # The import lib function doesn't accept the 'd' pos fix cmake_print_properties(TARGETS Pytest::Pytest PROPERTIES NAME LOCATION) cmake_print_properties(TARGETS pybind11::headers PROPERTIES NAME LOCATION INTERFACE_INCLUDE_DIRECTORIES ) cmake_print_variables(pybind11_INCLUDE_DIRECTORIES) project(pymdf_lib VERSION 1.0 DESCRIPTION "ASAM MDF Python Module." LANGUAGES CXX) pybind11_add_module( pymdf MODULE src/pysamplerecord.cpp src/pymdf.h src/pymdf.cpp ) cmake_print_variables(CMAKE_SOURCE_DIR) cmake_print_variables(CMAKE_CURRENT_SOURCE_DIR) cmake_print_variables(CMAKE_BINARY_DIR) cmake_print_variables(CMAKE_CURRENT_BINARY_DIR) cmake_print_variables(Python3_EXECUTABLE) target_include_directories(pymdf PRIVATE ${CMAKE_SOURCE_DIR}/include) target_include_directories(pymdf PRIVATE ${pybind11_INCLUDE_DIRS}) target_link_libraries(pymdf PRIVATE mdf) cmake_print_properties(TARGETS pymdf PROPERTIES NAME INCLUDE_DIRECTORIES ) if (MDF_BUILD_TEST) # Need to copy the pyd modules to the virtual environment # so the CLION can handle the pytest properly file(GLOB module_files CONFIGURE_DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pymdf.* ) foreach (pyfile ${module_files}) add_custom_command( TARGET pymdf POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different ARGS ${pyfile} "${CMAKE_SOURCE_DIR}/venv/Lib" ) endforeach () # Add the test to the CTest. The pyd module is in the current binary dir, # so the pytest should run. enable_testing() add_test(NAME pymdf_test COMMAND ${Python3_EXECUTABLE} -m pytest --log-cli-level=0 ${CMAKE_CURRENT_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) endif()