123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- project(GTSAM CXX C)
- cmake_minimum_required(VERSION 3.0)
- # new feature to Cmake Version > 2.8.12
- # Mac ONLY. Define Relative Path on Mac OS
- if(NOT DEFINED CMAKE_MACOSX_RPATH)
- set(CMAKE_MACOSX_RPATH 0)
- endif()
- # Set the version number for the library
- set (GTSAM_VERSION_MAJOR 4)
- set (GTSAM_VERSION_MINOR 1)
- set (GTSAM_VERSION_PATCH 1)
- math (EXPR GTSAM_VERSION_NUMERIC "10000 * ${GTSAM_VERSION_MAJOR} + 100 * ${GTSAM_VERSION_MINOR} + ${GTSAM_VERSION_PATCH}")
- set (GTSAM_VERSION_STRING "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}")
- set (CMAKE_PROJECT_VERSION ${GTSAM_VERSION_STRING})
- set (CMAKE_PROJECT_VERSION_MAJOR ${GTSAM_VERSION_MAJOR})
- set (CMAKE_PROJECT_VERSION_MINOR ${GTSAM_VERSION_MINOR})
- set (CMAKE_PROJECT_VERSION_PATCH ${GTSAM_VERSION_PATCH})
- ###############################################################################
- # Gather information, perform checks, set defaults
- set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
- include(GtsamMakeConfigFile)
- include(GNUInstallDirs)
- # Load build type flags and default to Debug mode
- include(GtsamBuildTypes)
- # Use macros for creating tests/timing scripts
- include(GtsamTesting)
- include(GtsamPrinting)
- # guard against in-source builds
- if(${GTSAM_SOURCE_DIR} STREQUAL ${GTSAM_BINARY_DIR})
- message(FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there. You may need to remove CMakeCache.txt. ")
- endif()
- include(cmake/HandleGeneralOptions.cmake) # CMake build options
- # Libraries:
- include(cmake/HandleBoost.cmake) # Boost
- include(cmake/HandleCCache.cmake) # ccache
- include(cmake/HandleCPack.cmake) # CPack
- include(cmake/HandleEigen.cmake) # Eigen3
- include(cmake/HandleMetis.cmake) # metis
- include(cmake/HandleMKL.cmake) # MKL
- include(cmake/HandleOpenMP.cmake) # OpenMP
- include(cmake/HandlePerfTools.cmake) # Google perftools
- include(cmake/HandlePython.cmake) # Python options and commands
- include(cmake/HandleTBB.cmake) # TBB
- include(cmake/HandleUninstall.cmake) # for "make uninstall"
- include(cmake/HandleAllocators.cmake) # Must be after tbb, pertools
- include(cmake/HandleGlobalBuildFlags.cmake) # Build flags
- ###############################################################################
- # Add components
- # Build CppUnitLite
- add_subdirectory(CppUnitLite)
- # Build GTSAM library
- add_subdirectory(gtsam)
- # Build Tests
- add_subdirectory(tests)
- # Build examples
- add_subdirectory(examples)
- # Build timing
- add_subdirectory(timing)
- # Build gtsam_unstable
- if (GTSAM_BUILD_UNSTABLE)
- add_subdirectory(gtsam_unstable)
- endif()
- # This is the new wrapper
- if(GTSAM_BUILD_PYTHON OR GTSAM_INSTALL_MATLAB_TOOLBOX)
- # Need to set this for the wrap package so we don't use the default value.
- set(WRAP_PYTHON_VERSION ${GTSAM_PYTHON_VERSION}
- CACHE STRING "The Python version to use for wrapping")
- # Set the include directory for matlab.h
- set(GTWRAP_INCLUDE_NAME "wrap")
- add_subdirectory(wrap)
- list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/wrap/cmake")
- endif()
- # Python toolbox
- if(GTSAM_BUILD_PYTHON)
- add_subdirectory(python)
- endif()
- # Matlab toolbox
- if(GTSAM_INSTALL_MATLAB_TOOLBOX)
- add_subdirectory(matlab)
- endif()
- # Install config and export files
- GtsamMakeConfigFile(GTSAM "${CMAKE_CURRENT_SOURCE_DIR}/gtsam_extra.cmake.in")
- export(TARGETS ${GTSAM_EXPORTED_TARGETS} FILE GTSAM-exports.cmake)
- if (GTSAM_BUILD_UNSTABLE)
- GtsamMakeConfigFile(GTSAM_UNSTABLE "${CMAKE_CURRENT_SOURCE_DIR}/gtsam_extra.cmake.in")
- export(TARGETS ${GTSAM_UNSTABLE_EXPORTED_TARGETS} FILE GTSAM_UNSTABLE-exports.cmake)
- endif()
- # Check for doxygen availability - optional dependency
- find_package(Doxygen)
- # Doxygen documentation - enabling options in subfolder
- if (DOXYGEN_FOUND)
- add_subdirectory(doc)
- endif()
- # CMake Tools
- add_subdirectory(cmake)
- # Print configuration variables
- include(cmake/HandlePrintConfiguration.cmake)
- # Print warnings at the end
- include(cmake/HandleFinalChecks.cmake)
- # Include CPack *after* all flags
- include(CPack)
|