trying a simpler build script approach

release/4.3a0
Alex Cunningham 2012-01-31 05:18:53 +00:00
parent 4c54d05da9
commit 64c49bc431
4 changed files with 163 additions and 70 deletions

View File

@ -34,7 +34,7 @@ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DEIGEN_NO_DEBUG")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DEIGEN_NO_DEBUG") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DEIGEN_NO_DEBUG")
# Configurable Options # Configurable Options
# TODO
# Pull in tests # Pull in tests
enable_testing() enable_testing()

View File

@ -15,3 +15,11 @@ foreach(eigen_dir ${eigen_dir_headers_all})
install(FILES Eigen/Eigen/${filename} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/gtsam/3rdparty/Eigen/Eigen) install(FILES Eigen/Eigen/${filename} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/gtsam/3rdparty/Eigen/Eigen)
endif() endif()
endforeach(eigen_dir) 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})

View File

@ -1,6 +1,7 @@
# Build full gtsam library as a single library # Build full gtsam library as a single library
# and also build tests # and also build tests
set (gtsam_subdirs set (gtsam_subdirs
3rdparty
base base
geometry geometry
inference inference
@ -8,73 +9,77 @@ set (gtsam_subdirs
nonlinear nonlinear
slam) slam)
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}) foreach(subdir ${gtsam_subdirs})
message(STATUS "Building ${subdir}") add_subdirectory(${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) endforeach(subdir)
# build shared and static versions of the library #set (ccolamd_srcs
add_library(${PROJECT_NAME}-static STATIC ${gtsam_srcs}) # 3rdparty/CCOLAMD/Source/ccolamd.c
set_target_properties(${PROJECT_NAME}-static PROPERTIES OUTPUT_NAME "${PROJECT_NAME}") # 3rdparty/CCOLAMD/Source/ccolamd_global.c
set_target_properties(${PROJECT_NAME}-static PROPERTIES CLEAN_DIRECT_OUTPUT 1) # 3rdparty/UFconfig/UFconfig.c)
set_target_properties(${PROJECT_NAME}-static PROPERTIES #
VERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" ## install headers from 3rdparty libraries
SOVERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" #add_subdirectory(3rdparty)
) #
install(TARGETS ${PROJECT_NAME}-static ARCHIVE DESTINATION lib) ## Accumulate gtsam_srcs
#set(gtsam_srcs ${ccolamd_srcs})
add_library(${PROJECT_NAME}-shared SHARED ${gtsam_srcs}) #
set_target_properties(${PROJECT_NAME}-shared PROPERTIES OUTPUT_NAME "${PROJECT_NAME}") ## Get all sources and headers from each subdirectory
set_target_properties(${PROJECT_NAME}-shared PROPERTIES CLEAN_DIRECT_OUTPUT 1) #foreach(subdir ${gtsam_subdirs})
set_target_properties(${PROJECT_NAME}-shared PROPERTIES # message(STATUS "Building ${subdir}")
VERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" # file(GLOB sub_gtsam_srcs "${subdir}/*.cpp")
SOVERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}" # list(APPEND gtsam_srcs ${sub_gtsam_srcs})
) #
# # install headers
install(TARGETS ${PROJECT_NAME}-shared LIBRARY DESTINATION lib ) # file(GLOB sub_gtsam_headers "${subdir}/*.h")
# install(FILES ${sub_gtsam_headers} DESTINATION include/gtsam/${subdir})
# Get all sources and headers from each #endforeach(subdir)
foreach(subdir ${gtsam_subdirs}) #
# Build tests ## build shared and static versions of the library
file(GLOB tests_srcs "${subdir}/tests/test*.cpp") #add_library(${PROJECT_NAME}-static STATIC ${gtsam_srcs})
foreach(test_src ${tests_srcs}) #set_target_properties(${PROJECT_NAME}-static PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
get_filename_component(test_base ${test_src} NAME_WE) #set_target_properties(${PROJECT_NAME}-static PROPERTIES CLEAN_DIRECT_OUTPUT 1)
set( test_bin ${subdir}_${test_base} ) #set_target_properties(${PROJECT_NAME}-static PROPERTIES
add_executable(${test_bin} EXCLUDE_FROM_ALL ${test_src}) # VERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}"
add_dependencies(${test_bin} ${PROJECT_NAME}-static) # SOVERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}"
add_dependencies(check ${test_bin}) # )
add_test(${subdir}/${test_base} ${EXECUTABLE_OUTPUT_PATH}${test_bin}) #install(TARGETS ${PROJECT_NAME}-static ARCHIVE DESTINATION lib)
target_link_libraries(${test_bin} CppUnitLite gtsam-static) #
add_custom_target(${test_bin}.run ${EXECUTABLE_OUTPUT_PATH}${test_bin} ${ARGN}) #add_library(${PROJECT_NAME}-shared SHARED ${gtsam_srcs})
endforeach(test_src) #set_target_properties(${PROJECT_NAME}-shared PROPERTIES OUTPUT_NAME "${PROJECT_NAME}")
#set_target_properties(${PROJECT_NAME}-shared PROPERTIES CLEAN_DIRECT_OUTPUT 1)
# Build timing scripts #set_target_properties(${PROJECT_NAME}-shared PROPERTIES
file(GLOB time_srcs "${subdir}/tests/time*.cpp") # VERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}"
foreach(time_src ${time_srcs}) # SOVERSION "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}"
get_filename_component(time_base ${time_src} NAME_WE) # )
set( time_bin ${time_base} ) #
add_executable(${time_bin} EXCLUDE_FROM_ALL ${time_src}) #install(TARGETS ${PROJECT_NAME}-shared LIBRARY DESTINATION lib )
add_dependencies(${test_bin} ${PROJECT_NAME}-static) #
add_dependencies(timing ${time_bin}) ## Get all sources and headers from each
target_link_libraries(${time_bin} CppUnitLite gtsam-static) #foreach(subdir ${gtsam_subdirs})
add_custom_target(${time_base}.run ${EXECUTABLE_OUTPUT_PATH}${time_bin} ${ARGN}) # # Build tests
endforeach(time_src) # file(GLOB tests_srcs "${subdir}/tests/test*.cpp")
endforeach(subdir) # 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)

80
gtsam/base/CMakeLists.txt Normal file
View File

@ -0,0 +1,80 @@
# Build full gtsam library as a single library
# and also build tests
set (gtsam_subdirs
base
geometry
inference
linear
nonlinear
slam)
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)