Skip to content

Commit f6152f6

Browse files
committed
cmake: Apply change to be compatible with workspace
1 parent bb7d6b5 commit f6152f6

File tree

2 files changed

+43
-11
lines changed

2 files changed

+43
-11
lines changed

CMakeLists.txt

+38-6
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ SET(PROJECT_DESCRIPTION "Python bindings for CppAD and CppADCodeGen using Boost.
99
SET(PROJECT_URL "https://github.com/simple-robotics/pycppad")
1010
SET(PROJECT_CUSTOM_HEADER_EXTENSION "hpp")
1111
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
12+
set(PROJECT_AUTO_RUN_FINALIZE FALSE)
1213

1314

1415
# Project configuration
@@ -17,15 +18,43 @@ SET(CMAKE_VERBOSE_MAKEFILE TRUE)
1718
SET(CXX_DISABLE_WERROR TRUE)
1819

1920
# Check if the submodule cmake have been initialized
20-
IF(NOT EXISTS "${CMAKE_SOURCE_DIR}/cmake/base.cmake")
21+
set(JRL_CMAKE_MODULES "${CMAKE_CURRENT_LIST_DIR}/cmake")
22+
IF(NOT EXISTS "${JRL_CMAKE_MODULES}/base.cmake")
2123
MESSAGE(FATAL_ERROR "\nPlease run the following command first:\ngit submodule update --init\n")
2224
ENDIF()
2325

24-
INCLUDE(cmake/base.cmake)
25-
INCLUDE(cmake/boost.cmake)
26-
INCLUDE(cmake/ide.cmake)
27-
28-
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/find-external/CppAD/" ${CMAKE_MODULE_PATH})
26+
if(EXISTS "${JRL_CMAKE_MODULES}/base.cmake")
27+
message(STATUS "JRL cmakemodules found in 'cmake/' git submodule")
28+
else()
29+
find_package(jrl-cmakemodules QUIET CONFIG)
30+
if(jrl-cmakemodules_FOUND)
31+
get_property(
32+
JRL_CMAKE_MODULES
33+
TARGET jrl-cmakemodules::jrl-cmakemodules
34+
PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
35+
message(STATUS "JRL cmakemodules found on system at ${JRL_CMAKE_MODULES}")
36+
elseif(${CMAKE_VERSION} VERSION_LESS "3.14.0")
37+
message(
38+
FATAL_ERROR
39+
"\nCan't find jrl-cmakemodules. Please either:\n"
40+
" - use git submodule: 'git submodule update --init'\n"
41+
" - or install https://github.com/jrl-umi3218/jrl-cmakemodules\n"
42+
" - or upgrade your CMake version to >= 3.14 to allow automatic fetching\n")
43+
else()
44+
message(STATUS "JRL cmakemodules not found. Let's fetch it.")
45+
include(FetchContent)
46+
FetchContent_Declare("jrl-cmakemodules"
47+
GIT_REPOSITORY "https://github.com/jrl-umi3218/jrl-cmakemodules.git")
48+
FetchContent_MakeAvailable("jrl-cmakemodules")
49+
FetchContent_GetProperties("jrl-cmakemodules" SOURCE_DIR JRL_CMAKE_MODULES)
50+
endif()
51+
endif()
52+
53+
INCLUDE(${JRL_CMAKE_MODULES}/base.cmake)
54+
INCLUDE(${JRL_CMAKE_MODULES}/boost.cmake)
55+
INCLUDE(${JRL_CMAKE_MODULES}/ide.cmake)
56+
57+
SET(CMAKE_MODULE_PATH "${JRL_CMAKE_MODULES}/find-external/CppAD/" ${CMAKE_MODULE_PATH})
2958

3059
# Project definition
3160
COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX)
@@ -47,6 +76,7 @@ ENDIF(BUILD_WITH_CPPAD_CODEGEN_BINDINGS)
4776

4877
ADD_PROJECT_DEPENDENCY(cppad 20180000.0 REQUIRED PKG_CONFIG_REQUIRES "cppad >= 20180000.0")
4978
ADD_PROJECT_DEPENDENCY(Eigen3 REQUIRED PKG_CONFIG_REQUIRES "eigen3 >= 3.0.5")
79+
FINDPYTHON()
5080
ADD_PROJECT_DEPENDENCY(eigenpy 2.7.14 REQUIRED)
5181

5282
SET(${PROJECT_NAME}_HEADERS
@@ -140,3 +170,5 @@ PKG_CONFIG_APPEND_BOOST_LIBS(${BOOST_COMPONENTS})
140170

141171
# Install catkin package.xml
142172
INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME})
173+
174+
setup_project_finalize()

python/CMakeLists.txt

+5-5
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ SET(PYWRAP ${PYWRAP} PARENT_SCOPE)
88

99
MAKE_DIRECTORY("${${PROJECT_NAME}_BINARY_DIR}/python/${PROJECT_NAME}")
1010

11-
ADD_CUSTOM_TARGET(python)
12-
SET_TARGET_PROPERTIES(python PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD True)
11+
ADD_CUSTOM_TARGET(${PROJECT_NAME}_python)
12+
SET_TARGET_PROPERTIES(${PROJECT_NAME}_python PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD True)
1313

1414
ADD_LIBRARY(${PYWRAP} SHARED main.cpp)
15-
ADD_DEPENDENCIES(python ${PYWRAP})
15+
ADD_DEPENDENCIES(${PROJECT_NAME}_python ${PYWRAP})
1616
TARGET_LINK_LIBRARIES(${PYWRAP} PUBLIC ${PROJECT_NAME})
1717
TARGET_LINK_BOOST_PYTHON(${PYWRAP} PUBLIC)
1818
# BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS spews conversion warnings from int to long unsigned int.
@@ -35,9 +35,9 @@ SET_TARGET_PROPERTIES(${PYWRAP}
3535
PREFIX ""
3636
SUFFIX ${PYTHON_EXT_SUFFIX}
3737
OUTPUT_NAME "${PYWRAP}"
38-
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/python/${PROJECT_NAME}"
38+
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/python/${PROJECT_NAME}"
3939
# On Windows, shared library are treated as binary
40-
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/python/${PROJECT_NAME}"
40+
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/python/${PROJECT_NAME}"
4141
)
4242

4343
IF(UNIX AND NOT APPLE)

0 commit comments

Comments
 (0)