From 6ea5a3cbe601bc14cb18614fdaa97092abf96f3c Mon Sep 17 00:00:00 2001 From: Nicolas David Date: Mon, 25 Sep 2017 21:05:46 +0200 Subject: fix #560 install cmake config file to lib and use GNUInstallDirs on Unix (#561) * fix #560 install proj4-config.cmake to defaut path * add some variable and cmake option to specify where the cmake config file should be installed. * change project_root_dir use in project-config.cmake.in variable from hard coded path to computed path with file(RELATIVE_PATH) function. * Still use the old project-config.cmake/configure_file way of generate config file. A cleaner way could be to use the modern cmake export(target ..) * use GNUInstallDirs for default unix install path --- cmake/CMakeLists.txt | 14 ++++---------- cmake/Proj4InstallPath.cmake | 24 ++++++++++++++++++++---- 2 files changed, 24 insertions(+), 14 deletions(-) (limited to 'cmake') diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 742da0e9..0fcde0ca 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -2,13 +2,7 @@ # ${INSTALL_CMAKE_DIR} and @PROJECT_ROOT_DIR@ is the relative # path to the root from there. (Note that the whole install tree can # be relocated.) -if (NOT WIN32) - set (INSTALL_CMAKE_DIR "share/cmake/${PROJECT_NAME}") - set (PROJECT_ROOT_DIR "../../..") -else () - set (INSTALL_CMAKE_DIR "cmake") - set (PROJECT_ROOT_DIR "..") -endif () +file(RELATIVE_PATH PROJECT_ROOT_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKECONFIGDIR} ${CMAKE_INSTALL_PREFIX}) string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER) configure_file (project-config.cmake.in project-config.cmake @ONLY) @@ -16,14 +10,14 @@ configure_file (project-config-version.cmake.in project-config-version.cmake @ONLY) install (FILES "${CMAKE_CURRENT_BINARY_DIR}/project-config.cmake" - DESTINATION "${INSTALL_CMAKE_DIR}" + DESTINATION "${CMAKECONFIGDIR}" RENAME "${PROJECT_NAME_LOWER}-config.cmake") install (FILES "${CMAKE_CURRENT_BINARY_DIR}/project-config-version.cmake" - DESTINATION "${INSTALL_CMAKE_DIR}" + DESTINATION "${CMAKECONFIGDIR}" RENAME "${PROJECT_NAME_LOWER}-config-version.cmake") # Make information about the cmake targets (the library and the tools) # available. install (EXPORT targets FILE ${PROJECT_NAME_LOWER}-targets.cmake - DESTINATION "${INSTALL_CMAKE_DIR}") + DESTINATION "${CMAKECONFIGDIR}") diff --git a/cmake/Proj4InstallPath.cmake b/cmake/Proj4InstallPath.cmake index da1491c0..04f24670 100644 --- a/cmake/Proj4InstallPath.cmake +++ b/cmake/Proj4InstallPath.cmake @@ -15,19 +15,29 @@ endif(UNIX) IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - SET(CMAKE_INSTALL_PREFIX ${DEFAULT_PROJ_ROOT_DIR} CACHE PATH "Foo install + SET(CMAKE_INSTALL_PREFIX ${DEFAULT_PROJ_ROOT_DIR} CACHE PATH "Proj.4 install prefix" FORCE) ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) #TODO # for data install testing the PROJ_LIB envVar +string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER) if(WIN32) set(DEFAULT_BIN_SUBDIR bin) set(DEFAULT_LIB_SUBDIR local/lib) set(DEFAULT_DATA_SUBDIR share) set(DEFAULT_INCLUDE_SUBDIR local/include) set(DEFAULT_DOC_SUBDIR share/doc/proj) + set(DEFAULT_CMAKE_SUBDIR local/lib/cmake/${PROJECT_NAME_LOWER}) +elseif(UNIX) + include(GNUInstallDirs) + set(DEFAULT_BIN_SUBDIR ${CMAKE_INSTALL_BINDIR}) + set(DEFAULT_LIB_SUBDIR ${CMAKE_INSTALL_LIBDIR}) + set(DEFAULT_DATA_SUBDIR ${CMAKE_INSTALL_DATADIR}) + set(DEFAULT_INCLUDE_SUBDIR ${CMAKE_INSTALL_INCLUDEDIR}) + set(DEFAULT_DOC_SUBDIR ${CMAKE_INSTALL_DOCDIR}) + set(DEFAULT_CMAKE_SUBDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME_LOWER}) else() # Common locatoins for Unix and Mac OS X set(DEFAULT_BIN_SUBDIR bin) @@ -35,9 +45,11 @@ else() set(DEFAULT_DATA_SUBDIR share/proj) set(DEFAULT_DOC_SUBDIR doc/proj) set(DEFAULT_INCLUDE_SUBDIR include) + set(DEFAULT_DOC_SUBDIR share/doc/proj) + set(DEFAULT_CMAKE_SUBDIR lib/cmake/${PROJECT_NAME_LOWER}) endif() -# Locations are changeable by user to customize layout of PDAL installation +# Locations are changeable by user to customize layout of Proj.4 installation # (default values are platform-specific) set(PROJ_BIN_SUBDIR ${DEFAULT_BIN_SUBDIR} CACHE STRING "Subdirectory where executables will be installed") @@ -48,7 +60,9 @@ set(PROJ_INCLUDE_SUBDIR ${DEFAULT_INCLUDE_SUBDIR} CACHE STRING set(PROJ_DATA_SUBDIR ${DEFAULT_DATA_SUBDIR} CACHE STRING "Subdirectory where data will be installed") set(PROJ_DOC_SUBDIR ${DEFAULT_DOC_SUBDIR} CACHE STRING - "Subdirectory where data will be installed") + "Subdirectory where doc will be installed") +set(PROJ_CMAKE_SUBDIR ${DEFAULT_CMAKE_SUBDIR} CACHE STRING + "Subdirectory where cmake proj4-config file will be installed") # Mark *DIR variables as advanced and dedicated to use by power-users only. mark_as_advanced(PROJ_ROOT_DIR @@ -56,12 +70,14 @@ mark_as_advanced(PROJ_ROOT_DIR PROJ_LIB_SUBDIR PROJ_INCLUDE_SUBDIR PROJ_DATA_SUBDIR - PROJ_DOC_SUBDIR ) + PROJ_DOC_SUBDIR + PROJ_CMAKE_SUBDIR ) set(DEFAULT_BINDIR "${PROJ_BIN_SUBDIR}") set(DEFAULT_LIBDIR "${PROJ_LIB_SUBDIR}") set(DEFAULT_DATADIR "${PROJ_DATA_SUBDIR}") set(DEFAULT_DOCDIR "${PROJ_DOC_SUBDIR}") set(DEFAULT_INCLUDEDIR "${PROJ_INCLUDE_SUBDIR}") +set(DEFAULT_CMAKEDIR "${PROJ_CMAKE_SUBDIR}") -- cgit v1.2.3 From 1402ac196457fb99bb16962c0d1371b6885b44c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20=C5=81oskot?= Date: Wed, 27 Sep 2017 23:24:16 +0200 Subject: Add detection of MSVC 14.0 and 14.1+ to CMake configuration (#580) --- cmake/Proj4SystemInfo.cmake | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'cmake') diff --git a/cmake/Proj4SystemInfo.cmake b/cmake/Proj4SystemInfo.cmake index 294a50b2..fda57edb 100644 --- a/cmake/Proj4SystemInfo.cmake +++ b/cmake/Proj4SystemInfo.cmake @@ -50,6 +50,12 @@ if(WIN32) if(MSVC_VERSION EQUAL 1800) set(PROJ_COMPILER_NAME "msvc-12.0") #Visual Studio 2013 endif() + if(MSVC_VERSION EQUAL 1900) # CMake 3.1+ + set(PROJ_COMPILER_NAME "msvc-14.0") #Visual Studio 2015 + endif() + if(MSVC_VERSION GREATER 1900 AND MSVC_VERSION LESS 1920) # CMake 3.8+ + set(PROJ_COMPILER_NAME "msvc-14.1") #Visual Studio 2017 + endif() endif(MSVC) if(MINGW) -- cgit v1.2.3 From a90a9ec5daa335b8b5eb6c93e4f5a0e48ca5656e Mon Sep 17 00:00:00 2001 From: Howard Butler Date: Wed, 27 Sep 2017 16:25:39 -0500 Subject: CMake updates (#578) * install proj4 data in share/proj, not share/ * no need for CMP0022 policy anymore --- cmake/Proj4InstallPath.cmake | 8 ++++---- cmake/policies.cmake | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) (limited to 'cmake') diff --git a/cmake/Proj4InstallPath.cmake b/cmake/Proj4InstallPath.cmake index 04f24670..b06777f4 100644 --- a/cmake/Proj4InstallPath.cmake +++ b/cmake/Proj4InstallPath.cmake @@ -19,7 +19,7 @@ IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) prefix" FORCE) ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) -#TODO +#TODO # for data install testing the PROJ_LIB envVar string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER) @@ -34,7 +34,7 @@ elseif(UNIX) include(GNUInstallDirs) set(DEFAULT_BIN_SUBDIR ${CMAKE_INSTALL_BINDIR}) set(DEFAULT_LIB_SUBDIR ${CMAKE_INSTALL_LIBDIR}) - set(DEFAULT_DATA_SUBDIR ${CMAKE_INSTALL_DATADIR}) + set(DEFAULT_DATA_SUBDIR ${CMAKE_INSTALL_DATAROOTDIR}/proj) set(DEFAULT_INCLUDE_SUBDIR ${CMAKE_INSTALL_INCLUDEDIR}) set(DEFAULT_DOC_SUBDIR ${CMAKE_INSTALL_DOCDIR}) set(DEFAULT_CMAKE_SUBDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME_LOWER}) @@ -67,8 +67,8 @@ set(PROJ_CMAKE_SUBDIR ${DEFAULT_CMAKE_SUBDIR} CACHE STRING # Mark *DIR variables as advanced and dedicated to use by power-users only. mark_as_advanced(PROJ_ROOT_DIR PROJ_BIN_SUBDIR - PROJ_LIB_SUBDIR - PROJ_INCLUDE_SUBDIR + PROJ_LIB_SUBDIR + PROJ_INCLUDE_SUBDIR PROJ_DATA_SUBDIR PROJ_DOC_SUBDIR PROJ_CMAKE_SUBDIR ) diff --git a/cmake/policies.cmake b/cmake/policies.cmake index c16fbc12..e1bfd53b 100644 --- a/cmake/policies.cmake +++ b/cmake/policies.cmake @@ -1,5 +1,4 @@ if (CMAKE_MAJOR_VERSION GREATER 2) - cmake_policy(SET CMP0022 OLD) # interface link libraries cmake_policy(SET CMP0042 NEW) # osx rpath cmake_policy(SET CMP0011 NEW) # policy setting endif() -- cgit v1.2.3