Use GNUInstallDirs
GNUInstallDirs was introduced with cmake-2.8.5 and provides
variables similar to the ones usually provided by autotools which
allow fine tuning the installation location.
Also install cmake files to a lower case 'cmake' dir which seems
more common than with a upper case 'C'.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 32bfefd..01196ba 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,8 @@
cmake_minimum_required(VERSION 2.8.12)
project(double-conversion)
+include(GNUInstallDirs)
+
# pick a version #
set(double-conversion_VERSION 2.0.1)
set(double-conversion_SOVERSION_MAJOR 1)
@@ -9,26 +11,13 @@
set(double-conversion_SOVERSION
${double-conversion_SOVERSION_MAJOR}.${double-conversion_SOVERSION_MINOR}.${double-conversion_SOVERSION_PATCH})
-# set paths for install -- empty initially
-# Offer the user the choice of overriding the installation directories
-set(INSTALL_BIN_DIR CACHE PATH "Installation directory for libraries")
-set(INSTALL_LIB_DIR CACHE PATH "Installation directory for libraries")
-set(INSTALL_INCLUDE_DIR CACHE PATH "Installation directory for include")
# set suffix for CMake files used for packaging
if(WIN32 AND NOT CYGWIN)
set(INSTALL_CMAKE_DIR CMake)
else()
- set(INSTALL_CMAKE_DIR lib/CMake/double-conversion)
+ set(INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/double-conversion)
endif()
-# Make relative paths absolute (needed later)
-foreach(p LIB BIN INCLUDE CMAKE)
- set(var INSTALL_${p}_DIR)
- if(NOT IS_ABSOLUTE "${${var}}")
- set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
- endif()
-endforeach()
-
# Add src subdirectory
add_subdirectory(double-conversion)
@@ -58,12 +47,6 @@
@ONLY)
#
-# determine where include is relative to the CMake dir in
-# in installed tree
-file(RELATIVE_PATH CONF_REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}"
- "${INSTALL_INCLUDE_DIR}")
-
-#
# sets up config to be used by CMake find_package
configure_file(double-conversionConfig.cmake.in
"${PROJECT_BINARY_DIR}/double-conversionConfig.cmake"
diff --git a/double-conversion/CMakeLists.txt b/double-conversion/CMakeLists.txt
index c4484be..4a87b3e 100644
--- a/double-conversion/CMakeLists.txt
+++ b/double-conversion/CMakeLists.txt
@@ -43,8 +43,8 @@
# pulls along all the header files with the library.
install(TARGETS double-conversion
EXPORT double-conversionLibraryDepends
- RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT bin
- LIBRARY DESTINATION "${INSTALL_LIB_DIR}/lib" COMPONENT shlib
- ARCHIVE DESTINATION "${INSTALL_LIB_DIR}/lib" COMPONENT lib
- PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}/include/double-conversion"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT bin
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT shlib
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib
+ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/double-conversion"
COMPONENT dev)
diff --git a/double-conversionConfig.cmake.in b/double-conversionConfig.cmake.in
index 6c967f4..110df44 100644
--- a/double-conversionConfig.cmake.in
+++ b/double-conversionConfig.cmake.in
@@ -8,9 +8,9 @@
if(EXISTS "${double-conversion_CMAKE_DIR}/CMakeCache.txt")
include("${double-conversion_CMAKE_DIR}/double-conversionBuildTreeSettings.cmake")
else()
- set(double-conversion_INCLUDE_DIRS "@INCLUDE_INSTALL_DIR@/double-conversion")
+ set(double-conversion_INCLUDE_DIRS "@CMAKE_INSTALL_FULL_INCLUDEDIR@/double-conversion")
endif()
-include("@LIB_INSTALL_DIR@/cmake/double-conversion/double-conversionLibraryDepends.cmake")
+include("@CMAKE_INSTALL_FULL_LIBDIR@/cmake/double-conversion/double-conversionLibraryDepends.cmake")
set(double-conversion_LIBRARIES double-conversion)