summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorvrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2015-10-06 13:44:03 +0000
committervrouvrea <vrouvrea@636b058d-ea47-450e-bf9e-a15bfbe3eedb>2015-10-06 13:44:03 +0000
commit2e582f5a617ed7a4faaafa8930ae7291146a4543 (patch)
tree16c123d4f281e000d3a780bf0d0ae560f3cb6731 /src
parent17d191b4990aa182c7e2c9daa53e513e3ebc045f (diff)
GUDHIConfig.cmake and GUDHIVersion.cmake generation
generate_version.sh modification to take into account these new files git-svn-id: svn+ssh://scm.gforge.inria.fr/svnroot/gudhi/trunk@830 636b058d-ea47-450e-bf9e-a15bfbe3eedb Former-commit-id: 54d3d4f963fb29c9a142be1c28458ce05215ec79
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt72
-rw-r--r--src/GUDHIConfig.cmake.in15
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)