@@ -68,8 +68,23 @@ ELSE(WIN32)
6868 SET (LINK create_symlink)
6969ENDIF (WIN32 )
7070
71+ set (PYTHON_COMPONENTS Interpreter)
72+ if (CMAKE_VERSION VERSION_LESS "3.18" )
73+ # Development.Module only require headers, so it's best for our module
74+ # But it's not available before CMake 3.18
75+ set (PYTHON_COMPONENTS ${PYTHON_COMPONENTS} Development)
76+ else ()
77+ set (PYTHON_COMPONENTS ${PYTHON_COMPONENTS} Development.Module)
78+ endif ()
79+ if (NOT CMAKE_VERSION VERSION_LESS "3.14" )
80+ # NumPy provides a standard CMake imported target,
81+ # But it's not available before CMake 3.14
82+ set (PYTHON_COMPONENTS ${PYTHON_COMPONENTS} NumPy)
83+ endif ()
7184FINDPYTHON()
72- FIND_NUMPY()
85+ if (CMAKE_VERSION VERSION_LESS "3.14" )
86+ FIND_NUMPY()
87+ endif ()
7388
7489IF (WIN32 )
7590 LINK_DIRECTORIES (${PYTHON_LIBRARY_DIRS} )
@@ -200,13 +215,23 @@ SET(${PROJECT_NAME}_SOURCES
200215ADD_LIBRARY (${PROJECT_NAME} SHARED ${${PROJECT_NAME} _SOURCES} ${${PROJECT_NAME} _HEADERS})
201216TARGET_INCLUDE_DIRECTORIES (${PROJECT_NAME}
202217 SYSTEM PUBLIC
203- ${Boost_INCLUDE_DIRS}
204- ${EIGEN3_INCLUDE_DIR}
205- ${PYTHON_INCLUDE_DIRS}
206- ${NUMPY_INCLUDE_DIRS}
207218 $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR} /include >
208219 $<INSTALL_INTERFACE:include >)
209220
221+ if (TARGET Eigen3::Eigen)
222+ TARGET_LINK_LIBRARIES (${PROJECT_NAME} PUBLIC Eigen3::Eigen)
223+ else ()
224+ TARGET_INCLUDE_DIRECTORIES (${PROJECT_NAME} SYSTEM PUBLIC ${EIGEN3_INCLUDE_DIR} )
225+ endif ()
226+
227+ if (TARGET Python3::NumPy)
228+ TARGET_LINK_LIBRARIES (${PROJECT_NAME} PUBLIC Python3::NumPy)
229+ TARGET_INCLUDE_DIRECTORIES (${PROJECT_NAME} SYSTEM PRIVATE ${Python3_INCLUDE_DIRS} )
230+ else ()
231+ TARGET_INCLUDE_DIRECTORIES (${PROJECT_NAME} SYSTEM PUBLIC ${NUMPY_INCLUDE_DIRS} )
232+ TARGET_INCLUDE_DIRECTORIES (${PROJECT_NAME} SYSTEM PRIVATE ${PYTHON_INCLUDE_DIRS} )
233+ endif ()
234+
210235IF (SUFFIX_SO_VERSION)
211236 SET_TARGET_PROPERTIES (${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION} )
212237ENDIF (SUFFIX_SO_VERSION)
@@ -217,7 +242,12 @@ ELSE()
217242 TARGET_COMPILE_OPTIONS (${PROJECT_NAME} PRIVATE $<$<CXX_COMPILER_ID:MSVC >:-bigobj>)
218243ENDIF ()
219244
220- TARGET_LINK_BOOST_PYTHON(${PROJECT_NAME} PUBLIC )
245+ if (TARGET Boost::python3${Python3_VERSION_MINOR} AND NOT APPLE )
246+ TARGET_LINK_LIBRARIES (${PROJECT_NAME} PUBLIC Boost::python3${Python3_VERSION_MINOR} )
247+ else ()
248+ TARGET_LINK_BOOST_PYTHON(${PROJECT_NAME} PUBLIC )
249+ TARGET_INCLUDE_DIRECTORIES (${PROJECT_NAME} SYSTEM PUBLIC ${Boost_INCLUDE_DIRS} )
250+ endif ()
221251INSTALL (TARGETS ${PROJECT_NAME}
222252 EXPORT ${TARGETS_EXPORT_NAME}
223253 PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}
0 commit comments