diff --git a/CMakeLists.txt b/CMakeLists.txt index aedb4d92068a69b920ff36dd143feae646bf0a82..d973a04ec5136347c3ddc7fc92989e65b0f34a42 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) @@ -52,17 +52,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 1074c409ac8bf28d4a8c129884a47b46c6b21cc7..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") - target_include_directories(${name} PUBLIC ${pybind11_INCLUDE_DIRS} "python_binding") - target_link_libraries(${name} PUBLIC ${target_to_bind}) - + + pybind11_add_module(${name} MODULE ${pybind_src_files} "NO_EXTRAS") # NO EXTRA recquired for pip install + target_include_directories(${name} PUBLIC "python_binding") + target_link_libraries(${name} PUBLIC ${target_to_bind}) endif() endfunction()