diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 72 | ||||
-rw-r--r-- | src/GUDHIConfig.cmake.in | 15 |
2 files changed, 78 insertions, 9 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3e21870f..e8297aa8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,16 +1,12 @@ cmake_minimum_required(VERSION 2.6) project(GUDHI) -# Do not forget to version number. -set (GUDHI_MAJOR_VERSION 1) -set (GUDHI_MINOR_VERSION 2) -set (GUDHI_PATCH_VERSION 0) +include("CMakeGUDHIVersion.txt") list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/") find_package(Boost REQUIRED COMPONENTS system filesystem program_options chrono timer REQUIRED) - if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Release") endif() @@ -40,9 +36,35 @@ else() add_definitions(-DBOOST_ALL_NO_LIB) INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) - LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) - include_directories(include/) - + LINK_DIRECTORIES(${Boost_LIBRARY_DIRS}) + + #--------------------------------------------------------------------------------------- + # GUDHIConfig.cmake 1st part + + # Offer the user the choice of overriding the installation directories - i.e. "cmake -DGUDHI_DIR=~/gudhi/GUDHI_1.2.0 ." + set(INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries") + set(INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables") + set(INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files") + if(WIN32 AND NOT CYGWIN) + set(DEF_INSTALL_CMAKE_DIR CMake) + else() + set(DEF_INSTALL_CMAKE_DIR lib/CMake/GUDHI) + endif() + set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files") + + # Make relative paths absolute (needed later on) + foreach(p LIB BIN INCLUDE CMAKE) + set(var INSTALL_${p}_DIR) + if(NOT IS_ABSOLUTE "${${var}}") + set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}") + endif() + endforeach() + #--------------------------------------------------------------------------------------- + + #--------------------------------------------------------------------------------------- + # Gudhi compilation part + include_directories(include) + add_subdirectory(example/Simplex_tree) add_subdirectory(example/Persistent_cohomology) add_subdirectory(example/Skeleton_blocker) @@ -55,7 +77,39 @@ else() # data points generator add_subdirectory(data/points/generator) + #--------------------------------------------------------------------------------------- + + #--------------------------------------------------------------------------------------- + # GUDHIConfig.cmake 2nd part + # Export the package for use from the build-tree + # (this registers the build-tree with a global CMake-registry) + export(PACKAGE GUDHI) + + # Create the GUDHIConfig.cmake and GUDHIConfigVersion files + file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${INSTALL_INCLUDE_DIR}") + # ... for the build tree + set(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include" "${PROJECT_BINARY_DIR}/include") + configure_file(GUDHIConfig.cmake.in "${PROJECT_BINARY_DIR}/GUDHIConfig.cmake" @ONLY) + # ... for the install tree + set(CONF_INCLUDE_DIRS "\${GUDHI_CMAKE_DIR}/${REL_INCLUDE_DIR}") + configure_file(GUDHIConfig.cmake.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/GUDHIConfig.cmake" @ONLY) + # ... for both + configure_file(GUDHIConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/GUDHIConfigVersion.cmake" @ONLY) + + configure_file(GUDHIVersion.cmake.in "${PROJECT_BINARY_DIR}/GUDHIVersion.cmake" @ONLY) + + # Install the GUDHIConfig.cmake and GUDHIConfigVersion.cmake + install(FILES + "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/GUDHIConfig.cmake" + "${PROJECT_BINARY_DIR}/GUDHIConfigVersion.cmake" + DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev) + #--------------------------------------------------------------------------------------- + + #--------------------------------------------------------------------------------------- + # Gudhi installation part - install (DIRECTORY include/gudhi DESTINATION include) + # install the include file on "make install" + install(DIRECTORY include/gudhi DESTINATION include) + #--------------------------------------------------------------------------------------- endif() diff --git a/src/GUDHIConfig.cmake.in b/src/GUDHIConfig.cmake.in new file mode 100644 index 00000000..83aa61e7 --- /dev/null +++ b/src/GUDHIConfig.cmake.in @@ -0,0 +1,15 @@ +# - Config file for the GUDHI package +# It defines the following variables +# GUDHI_INCLUDE_DIRS - include directories for GUDHI +# GUDHI_LIBRARIES - libraries to link against +# GUDHI_EXECUTABLE - the executables + +# Compute paths +get_filename_component(GUDHI_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) +set(GUDHI_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@") + +# Our library dependencies (contains definitions for IMPORTED targets) +include("${GUDHI_CMAKE_DIR}/GUDHITargets.cmake") + +# These are IMPORTED targets created by GUDHITargets.cmake +set(GUDHI_EXECUTABLE mini_simplex_tree) |