128 lines
4.3 KiB
CMake
128 lines
4.3 KiB
CMake
project(gtsam_unstable LANGUAGES CXX)
|
|
|
|
# Build full gtsam_unstable library as a single library
|
|
# and also build tests
|
|
set (gtsam_unstable_subdirs
|
|
base
|
|
geometry
|
|
linear
|
|
discrete
|
|
dynamics
|
|
nonlinear
|
|
slam
|
|
)
|
|
|
|
if(GTSAM_SUPPORT_NESTED_DISSECTION) # Only build partition if metis is built
|
|
set (gtsam_unstable_subdirs ${gtsam_unstable_subdirs} partition)
|
|
endif(GTSAM_SUPPORT_NESTED_DISSECTION)
|
|
|
|
add_custom_target(check.unstable COMMAND ${CMAKE_CTEST_COMMAND} --output-on-failure)
|
|
|
|
# To exclude a source from the library build (in any subfolder)
|
|
# Add the full name to this list, as in the following example
|
|
# Sources to remove from builds
|
|
set (excluded_sources # "")
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/slam/serialization.cpp"
|
|
)
|
|
|
|
set (excluded_headers # "")
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/slam/serialization.h"
|
|
)
|
|
|
|
# if GTSAM_USE_BOOST_FEATURES is not set, then we need to exclude the following:
|
|
if(NOT GTSAM_USE_BOOST_FEATURES)
|
|
list (APPEND excluded_sources
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/linear/QPSParser.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/linear/QPSSolver.cpp"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/discrete/Scheduler.cpp"
|
|
)
|
|
list (APPEND excluded_headers
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/linear/QPSParser.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/linear/QPSSolver.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/discrete/Scheduler.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/parition/FindSeparator.h"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/parition/FindSeparator-inl.h"
|
|
)
|
|
endif()
|
|
|
|
# assemble core libraries
|
|
foreach(subdir ${gtsam_unstable_subdirs})
|
|
# Build convenience libraries
|
|
file(GLOB subdir_srcs "${subdir}/*.cpp")
|
|
file(GLOB subdir_headers "${subdir}/*.h")
|
|
list(REMOVE_ITEM subdir_srcs ${excluded_sources})
|
|
list(REMOVE_ITEM subdir_headers ${excluded_headers})
|
|
set(${subdir}_srcs ${subdir_srcs} ${subdir_headers})
|
|
gtsam_assign_source_folders("${${subdir}_srcs}") # Create MSVC structure
|
|
|
|
# Build local library and tests
|
|
message(STATUS "Building ${subdir}_unstable")
|
|
add_subdirectory(${subdir})
|
|
endforeach(subdir)
|
|
|
|
# dllexport.h
|
|
set(library_name GTSAM_UNSTABLE) # For substitution in dllexport.h.in
|
|
configure_file("${GTSAM_SOURCE_DIR}/cmake/dllexport.h.in" "dllexport.h")
|
|
list(APPEND gtsam_unstable_srcs "${PROJECT_BINARY_DIR}/dllexport.h")
|
|
install(FILES "${PROJECT_BINARY_DIR}/dllexport.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/gtsam_unstable)
|
|
|
|
# assemble gtsam_unstable components
|
|
set(gtsam_unstable_srcs
|
|
${base_srcs}
|
|
${geometry_srcs}
|
|
${linear_srcs}
|
|
${discrete_srcs}
|
|
${dynamics_srcs}
|
|
${nonlinear_srcs}
|
|
${slam_srcs}
|
|
)
|
|
|
|
if(GTSAM_SUPPORT_NESTED_DISSECTION) # Only build partition if metis is built
|
|
set (gtsam_unstable_srcs ${gtsam_unstable_srcs} ${partition_srcs})
|
|
endif(GTSAM_SUPPORT_NESTED_DISSECTION)
|
|
|
|
# Versions - same as core gtsam library
|
|
set(gtsam_unstable_version ${GTSAM_VERSION_STRING})
|
|
set(gtsam_unstable_soversion ${GTSAM_VERSION_MAJOR})
|
|
message(STATUS "GTSAM_UNSTABLE Version: ${gtsam_unstable_version}")
|
|
message(STATUS "Install prefix: ${CMAKE_INSTALL_PREFIX}")
|
|
|
|
add_library(gtsam_unstable ${GTSAM_LIBRARY_TYPE} ${gtsam_unstable_srcs})
|
|
|
|
# Apply build flags:
|
|
gtsam_apply_build_flags(gtsam_unstable)
|
|
|
|
set_target_properties(gtsam_unstable PROPERTIES
|
|
OUTPUT_NAME gtsam_unstable
|
|
CLEAN_DIRECT_OUTPUT 1
|
|
VERSION ${gtsam_unstable_version}
|
|
SOVERSION ${gtsam_unstable_soversion})
|
|
target_link_libraries(gtsam_unstable PUBLIC gtsam)
|
|
# No need to link against Boost here, it's inherited from gtsam PUBLIC interface
|
|
|
|
if(WIN32) # Add 'lib' prefix to static library to avoid filename collision with shared library
|
|
if (NOT GTSAM_SHARED_LIB)
|
|
set_target_properties(gtsam_unstable PROPERTIES
|
|
PREFIX "lib"
|
|
COMPILE_DEFINITIONS GTSAM_UNSTABLE_IMPORT_STATIC)
|
|
else()
|
|
set_target_properties(gtsam_unstable PROPERTIES
|
|
DEFINE_SYMBOL GTSAM_UNSTABLE_EXPORTS)
|
|
endif()
|
|
endif()
|
|
|
|
install(
|
|
TARGETS gtsam_unstable
|
|
EXPORT GTSAM_UNSTABLE-exports
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
list(APPEND GTSAM_UNSTABLE_EXPORTED_TARGETS gtsam_unstable)
|
|
set(GTSAM_UNSTABLE_EXPORTED_TARGETS "${GTSAM_UNSTABLE_EXPORTED_TARGETS}" PARENT_SCOPE)
|
|
|
|
# Build examples
|
|
add_subdirectory(examples)
|
|
|
|
# Build timing
|
|
add_subdirectory(timing)
|