diff --git a/.cproject b/.cproject index 17b162e72..4e91622c1 100644 --- a/.cproject +++ b/.cproject @@ -1770,6 +1770,14 @@ false true + + make + -j2 + gtsam-static + true + true + true + make -j2 diff --git a/gtsam/3rdparty/CMakeLists.txt b/gtsam/3rdparty/CMakeLists.txt index 4e6cefb47..45118d7b8 100644 --- a/gtsam/3rdparty/CMakeLists.txt +++ b/gtsam/3rdparty/CMakeLists.txt @@ -16,10 +16,9 @@ foreach(eigen_dir ${eigen_dir_headers_all}) endif() endforeach(eigen_dir) -# build convenience library -set (ccolamd_srcs - CCOLAMD/Source/ccolamd.c - CCOLAMD/Source/ccolamd_global.c - UFconfig/UFconfig.c) - -add_library(ccolamd STATIC ${ccolamd_srcs}) \ No newline at end of file +## build convenience library +#set (3rdparty_srcs +# CCOLAMD/Source/ccolamd.c +# CCOLAMD/Source/ccolamd_global.c +# UFconfig/UFconfig.c) +#add_library(ccolamd STATIC ${3rdparty_srcs}) \ No newline at end of file diff --git a/gtsam/CMakeLists.txt b/gtsam/CMakeLists.txt index 41f8f3d33..c696ed751 100644 --- a/gtsam/CMakeLists.txt +++ b/gtsam/CMakeLists.txt @@ -1,88 +1,69 @@ # Build full gtsam library as a single library # and also build tests set (gtsam_subdirs - 3rdparty base geometry inference linear nonlinear slam - ) +) +set(gtsam_srcs) + +# Build 3rdparty separately +message(STATUS "Building 3rdparty") +add_subdirectory(3rdparty) + +# build convenience library +set (3rdparty_srcs + 3rdparty/CCOLAMD/Source/ccolamd.c + 3rdparty/CCOLAMD/Source/ccolamd_global.c + 3rdparty/UFconfig/UFconfig.c) +add_library(ccolamd STATIC ${3rdparty_srcs}) + +# assemble core libaries foreach(subdir ${gtsam_subdirs}) + # Build convenience libraries + file(GLOB subdir_srcs "${subdir}/*.cpp") + add_library(${subdir} STATIC ${subdir_srcs}) + set(${subdir}_srcs ${subdir_srcs}) + # Build local library and tests message(STATUS "Building ${subdir}") add_subdirectory(${subdir}) endforeach(subdir) -#set (ccolamd_srcs -# 3rdparty/CCOLAMD/Source/ccolamd.c -# 3rdparty/CCOLAMD/Source/ccolamd_global.c -# 3rdparty/UFconfig/UFconfig.c) -# -## install headers from 3rdparty libraries -#add_subdirectory(3rdparty) -# -## Accumulate gtsam_srcs -#set(gtsam_srcs ${ccolamd_srcs}) -# -## Get all sources and headers from each subdirectory -#foreach(subdir ${gtsam_subdirs}) -# message(STATUS "Building ${subdir}") -# file(GLOB sub_gtsam_srcs "${subdir}/*.cpp") -# list(APPEND gtsam_srcs ${sub_gtsam_srcs}) -# -# # install headers -# file(GLOB sub_gtsam_headers "${subdir}/*.h") -# install(FILES ${sub_gtsam_headers} DESTINATION include/gtsam/${subdir}) -#endforeach(subdir) -# -## build shared and static versions of the library -#add_library(${PROJECT_NAME}-static STATIC ${gtsam_srcs}) -#set_target_properties(${PROJECT_NAME}-static PROPERTIES OUTPUT_NAME "${PROJECT_NAME}") -#set_target_properties(${PROJECT_NAME}-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) -#set_target_properties(${PROJECT_NAME}-static PROPERTIES -# VERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" -# SOVERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" -# ) -#install(TARGETS ${PROJECT_NAME}-static ARCHIVE DESTINATION lib) -# -#add_library(${PROJECT_NAME}-shared SHARED ${gtsam_srcs}) -#set_target_properties(${PROJECT_NAME}-shared PROPERTIES OUTPUT_NAME "${PROJECT_NAME}") -#set_target_properties(${PROJECT_NAME}-shared PROPERTIES CLEAN_DIRECT_OUTPUT 1) -#set_target_properties(${PROJECT_NAME}-shared PROPERTIES -# VERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" -# SOVERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" -# ) -# -#install(TARGETS ${PROJECT_NAME}-shared LIBRARY DESTINATION lib ) -# -## Get all sources and headers from each -#foreach(subdir ${gtsam_subdirs}) -# # Build tests -# file(GLOB tests_srcs "${subdir}/tests/test*.cpp") -# foreach(test_src ${tests_srcs}) -# get_filename_component(test_base ${test_src} NAME_WE) -# set( test_bin ${subdir}_${test_base} ) -# add_executable(${test_bin} EXCLUDE_FROM_ALL ${test_src}) -# add_dependencies(${test_bin} ${PROJECT_NAME}-static) -# add_dependencies(check ${test_bin}) -# add_test(${subdir}/${test_base} ${EXECUTABLE_OUTPUT_PATH}${test_bin}) -# target_link_libraries(${test_bin} CppUnitLite gtsam-static) -# add_custom_target(${test_bin}.run ${EXECUTABLE_OUTPUT_PATH}${test_bin} ${ARGN}) -# endforeach(test_src) -# -# # Build timing scripts -# file(GLOB time_srcs "${subdir}/tests/time*.cpp") -# foreach(time_src ${time_srcs}) -# get_filename_component(time_base ${time_src} NAME_WE) -# set( time_bin ${time_base} ) -# add_executable(${time_bin} EXCLUDE_FROM_ALL ${time_src}) -# add_dependencies(${test_bin} ${PROJECT_NAME}-static) -# add_dependencies(timing ${time_bin}) -# target_link_libraries(${time_bin} CppUnitLite gtsam-static) -# add_custom_target(${time_base}.run ${EXECUTABLE_OUTPUT_PATH}${time_bin} ${ARGN}) -# endforeach(time_src) -#endforeach(subdir) +# assemble gtsam components +set(gtsam_srcs + ${3rdparty_srcs} + ${base_srcs} + ${geometry_srcs} + ${inference_srcs} + ${linear_srcs} + ${nonlinear_srcs} + ${slam_srcs} +) + +# build shared and static versions of the library +message(STATUS "Building GTSAM - static") +message(STATUS "GTSAM library sources ${gtsam_srcs}") +add_library(gtsam-static STATIC ${gtsam_srcs}) +set_target_properties(gtsam-static PROPERTIES OUTPUT_NAME gtsam) +set_target_properties(gtsam-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) +set_target_properties(gtsam-static PROPERTIES + VERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" + SOVERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" + ) +install(TARGETS gtsam-static ARCHIVE DESTINATION lib) + +message(STATUS "Building GTSAM - shared") +add_library(gtsam-shared SHARED ${gtsam_srcs}) +set_target_properties(gtsam-shared PROPERTIES OUTPUT_NAME gtsam) +set_target_properties(gtsam-shared PROPERTIES CLEAN_DIRECT_OUTPUT 1) +set_target_properties(gtsam-shared PROPERTIES + VERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" + SOVERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" + ) +install(TARGETS gtsam-shared LIBRARY DESTINATION lib ) diff --git a/gtsam/base/CMakeLists.txt b/gtsam/base/CMakeLists.txt index 476740677..6c788d9c8 100644 --- a/gtsam/base/CMakeLists.txt +++ b/gtsam/base/CMakeLists.txt @@ -1,7 +1,3 @@ -# Build convenience libraries -file(GLOB base_srcs "*.cpp") -add_library(base STATIC ${base_srcs}) - # Install headers file(GLOB base_headers "*.h") install(FILES ${base_headers} DESTINATION include/gtsam/base) diff --git a/gtsam/geometry/CMakeLists.txt b/gtsam/geometry/CMakeLists.txt index ec16ba436..9decf7fa5 100644 --- a/gtsam/geometry/CMakeLists.txt +++ b/gtsam/geometry/CMakeLists.txt @@ -1,7 +1,3 @@ -# Build convenience libraries -file(GLOB geometry_srcs "*.cpp") -add_library(geometry STATIC ${geometry_srcs}) - # link back to base add_dependencies(geometry base) diff --git a/gtsam/inference/CMakeLists.txt b/gtsam/inference/CMakeLists.txt index 5a458812d..f1b671ea2 100644 --- a/gtsam/inference/CMakeLists.txt +++ b/gtsam/inference/CMakeLists.txt @@ -1,7 +1,3 @@ -# Build convenience libraries -file(GLOB inference_srcs "*.cpp") -add_library(inference STATIC ${inference_srcs}) - # link back to previous convenience library add_dependencies(inference base) diff --git a/gtsam/linear/CMakeLists.txt b/gtsam/linear/CMakeLists.txt index 0bbfcc782..1a5aea09b 100644 --- a/gtsam/linear/CMakeLists.txt +++ b/gtsam/linear/CMakeLists.txt @@ -1,7 +1,3 @@ -# Build convenience libraries -file(GLOB linear_srcs "*.cpp") -add_library(linear STATIC ${linear_srcs}) - # link back to base add_dependencies(linear inference) diff --git a/gtsam/nonlinear/CMakeLists.txt b/gtsam/nonlinear/CMakeLists.txt index 211ef1810..b489b7ba6 100644 --- a/gtsam/nonlinear/CMakeLists.txt +++ b/gtsam/nonlinear/CMakeLists.txt @@ -1,7 +1,3 @@ -# Build convenience libraries -file(GLOB nonlinear_srcs "*.cpp") -add_library(nonlinear STATIC ${nonlinear_srcs}) - # link back to base add_dependencies(nonlinear linear) diff --git a/gtsam/slam/CMakeLists.txt b/gtsam/slam/CMakeLists.txt index 08976d402..cc9e2c73d 100644 --- a/gtsam/slam/CMakeLists.txt +++ b/gtsam/slam/CMakeLists.txt @@ -1,7 +1,3 @@ -# Build convenience libraries -file(GLOB slam_srcs "*.cpp") -add_library(slam STATIC ${slam_srcs}) - # link back to base add_dependencies(slam nonlinear)