diff --git a/CMakeLists.txt b/CMakeLists.txt index d9892b6bebe2f6e20ef5575f6e621780d461ef85..1368373abb3cf53a8c1427b552c8ad3b7a230df0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.11) +cmake_minimum_required(VERSION 3.15) file(READ "${CMAKE_SOURCE_DIR}/version.txt" version) file(READ "${CMAKE_SOURCE_DIR}/project_name.txt" project) @@ -48,17 +48,13 @@ target_include_directories(${module_name} generate_python_binding(${project} ${module_name}) if (PYBIND) - message(STATUS "PYTHON INCLUDE DIR : ${PYTHON_INCLUDE_DIRS}") - message(STATUS "PYTHON PYTHON_LIBRARY : ${PYTHON_LIBRARIES}") - - target_include_directories(${module_name} - PUBLIC - $<BUILD_INTERFACE:${PYTHON_INCLUDE_DIRS}> - ) + # Handles Python + pybind11 headers dependencies target_link_libraries(${module_name} + PUBLIC + pybind11::pybind11 PRIVATE - ${PYTHON_LIBRARIES} - ) + Python::Python + ) endif() target_compile_features(${module_name} PRIVATE cxx_std_14) diff --git a/cmake/PybindModuleCreation.cmake b/cmake/PybindModuleCreation.cmake index a80b594bc3bac05cb651793ee0e80a2c1dd6552e..18f4abc38e2537c3f4d949f08772a57b90758cb0 100644 --- a/cmake/PybindModuleCreation.cmake +++ b/cmake/PybindModuleCreation.cmake @@ -9,12 +9,15 @@ function(generate_python_binding name target_to_bind) GIT_TAG v2.10.4 # or a later release ) + # Use the New FindPython mode, recommanded. Requires CMake 3.15+ + find_package(Python COMPONENTS Interpreter Development) FetchContent_MakeAvailable(PyBind11) + message(STATUS "Creating binding for module ${name}") file(GLOB_RECURSE pybind_src_files "python_binding/*.cpp") + pybind11_add_module(${name} MODULE ${pybind_src_files} "NO_EXTRAS") # NO EXTRA recquired for pip install - target_include_directories(${name} PUBLIC ${pybind11_INCLUDE_DIRS} "python_binding") - target_link_libraries(${name} PUBLIC ${target_to_bind}) - + target_include_directories(${name} PUBLIC "python_binding") + target_link_libraries(${name} PUBLIC ${target_to_bind}) endif() endfunction()