1- cmake_minimum_required (VERSION 3.10 )
1+ cmake_minimum_required (VERSION 3.22 )
22
33# Project properties
44set (PROJECT_NAMESPACE machines-in-motion)
@@ -16,7 +16,6 @@ set(CMAKE_VERBOSE_MAKEFILE True)
1616add_compile_options (--warn-no -conversion)
1717
1818# Project options
19- option (BUILD_PYTHON_INTERFACE "Build the python binding" ON )
2019option (SUFFIX_SO_VERSION "Suffix library name with its version" ON )
2120option (BUILD_WITH_PROXSUITE "Build the ProxQP-based SQP solver" OFF )
2221option (BUILD_BENCHMARKS "Build the benchmarks" OFF )
@@ -47,14 +46,6 @@ else()
4746 TARGET jrl-cmakemodules::jrl-cmakemodules
4847 PROPERTY INTERFACE_INCLUDE_DIRECTORIES )
4948 message (STATUS "JRL cmakemodules found on system at ${JRL_CMAKE_MODULES} " )
50- elseif (${CMAKE_VERSION} VERSION_LESS "3.14.0" )
51- message (
52- FATAL_ERROR
53- "\n Can't find jrl-cmakemodules. Please either:\n "
54- " - use git submodule: 'git submodule update --init'\n "
55- " - or install https://github.com/jrl-umi3218/jrl-cmakemodules\n "
56- " - or upgrade your CMake version to >= 3.14 to allow automatic fetching\n "
57- )
5849 else ()
5950 message (STATUS "JRL cmakemodules not found. Let's fetch it." )
6051 include (FetchContent)
@@ -129,25 +120,33 @@ if(BUILD_WITH_PROXSUITE)
129120 list (APPEND ${PROJECT_NAME} _SOURCES src/csqp_proxqp.cpp)
130121endif (BUILD_WITH_PROXSUITE)
131122
132- add_library (${PROJECT_NAME} SHARED ${${PROJECT_NAME} _SOURCES}
133- ${${PROJECT_NAME} _HEADERS})
134- target_include_directories (
135- ${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >)
136-
137- if (SUFFIX_SO_VERSION)
138- set_target_properties (${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION} )
139- endif ()
123+ if (BUILD_STANDALONE_PYTHON_INTERFACE)
124+ add_project_dependency(${PROJECT_NAME} REQUIRED CONFIG)
125+ set (PROJECT_EXPORT_NO_TARGET ON )
126+ else ()
127+ add_library (${PROJECT_NAME} SHARED ${${PROJECT_NAME} _SOURCES}
128+ ${${PROJECT_NAME} _HEADERS})
129+ add_library (${PROJECT_NAME} ::${PROJECT_NAME} ALIAS ${PROJECT_NAME} )
130+ target_include_directories (
131+ ${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR} >)
132+
133+ if (SUFFIX_SO_VERSION)
134+ set_target_properties (${PROJECT_NAME} PROPERTIES SOVERSION
135+ ${PROJECT_VERSION} )
136+ endif ()
140137
141- # Main Executable
142- target_link_libraries (${PROJECT_NAME} crocoddyl::crocoddyl)
143- if (BUILD_WITH_PROXSUITE)
144- target_link_libraries (${PROJECT_NAME} proxsuite::proxsuite)
145- endif ()
138+ # Main Executable
139+ target_link_libraries (${PROJECT_NAME} crocoddyl::crocoddyl)
140+ if (BUILD_WITH_PROXSUITE)
141+ target_link_libraries (${PROJECT_NAME} proxsuite::proxsuite)
142+ endif ()
146143
147- if (UNIX )
148- get_relative_rpath(${CMAKE_INSTALL_LIBDIR} ${PROJECT_NAME} _INSTALL_RPATH)
149- set_target_properties (
150- ${PROJECT_NAME} PROPERTIES INSTALL_RPATH "${${PROJECT_NAME} _INSTALL_RPATH}" )
144+ if (UNIX )
145+ get_relative_rpath(${CMAKE_INSTALL_LIBDIR} ${PROJECT_NAME} _INSTALL_RPATH)
146+ set_target_properties (
147+ ${PROJECT_NAME} PROPERTIES INSTALL_RPATH
148+ "${${PROJECT_NAME} _INSTALL_RPATH}" )
149+ endif ()
151150endif ()
152151
153152# Python Bindings
@@ -161,13 +160,14 @@ if(BUILD_TESTING)
161160endif ()
162161
163162# Benchmarks
164- if (BUILD_BENCHMARKS)
163+ if (BUILD_BENCHMARKS AND NOT BUILD_STANDALONE_PYTHON_INTERFACE )
165164 add_subdirectory (benchmarks)
166165endif ()
167166
168167# Installation
169- install (
170- TARGETS ${PROJECT_NAME}
171- EXPORT ${TARGETS_EXPORT_NAME}
172- DESTINATION ${CMAKE_INSTALL_LIBDIR} )
173- install (FILES package.xml DESTINATION share/${PROJECT_NAME} )
168+ if (NOT BUILD_STANDALONE_PYTHON_INTERFACE)
169+ install (
170+ TARGETS ${PROJECT_NAME}
171+ EXPORT ${TARGETS_EXPORT_NAME}
172+ DESTINATION ${CMAKE_INSTALL_LIBDIR} )
173+ endif ()
0 commit comments