From 14c867d2c94d7c866df41c9e1c7ab5b5c5aea967 Mon Sep 17 00:00:00 2001 From: Zbigniew Mandziejewicz Date: Thu, 9 Apr 2015 11:19:21 +0800 Subject: [PATCH] Use GNUInstallDirs, enable build tree export --- CMakeLists.txt | 106 ++++++++++++++++++++++----------------- src/glfw3Config.cmake.in | 4 +- 2 files changed, 63 insertions(+), 47 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5bd1d3124..caf587f4b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -474,37 +474,6 @@ else() set(GLFW_LIB_NAME glfw3) endif() -#-------------------------------------------------------------------- -# Create generated files -#-------------------------------------------------------------------- -include(CMakePackageConfigHelpers) - -set(GLFW_INSTALL_INCLUDE_DIR "include") -set(GLFW_INSTALL_LIBRARY_DIR "lib${LIB_SUFFIX}") -set(GLFW_INSTALL_CONFIG_DIR "lib${LIB_SUFFIX}/cmake/glfw3") -set(GLFW_INSTALL_PKGCONFIG_DIR "lib${LIB_SUFFIX}/pkgconfig") - -configure_package_config_file("${GLFW_SOURCE_DIR}/src/glfw3Config.cmake.in" - "${GLFW_BINARY_DIR}/src/glfw3Config.cmake" - INSTALL_DESTINATION "${GLFW_INSTALL_CONFIG_DIR}" - PATH_VARS CMAKE_INSTALL_PREFIX - NO_CHECK_REQUIRED_COMPONENTS_MACRO) - -write_basic_package_version_file("${GLFW_BINARY_DIR}/src/glfw3ConfigVersion.cmake" - VERSION ${GLFW_VERSION_FULL} - COMPATIBILITY SameMajorVersion) - -if (GLFW_BUILD_DOCS) - configure_file("${GLFW_SOURCE_DIR}/docs/Doxyfile.in" - "${GLFW_BINARY_DIR}/docs/Doxyfile" @ONLY) -endif() - -configure_file("${GLFW_SOURCE_DIR}/src/glfw_config.h.in" - "${GLFW_BINARY_DIR}/src/glfw_config.h" @ONLY) - -configure_file("${GLFW_SOURCE_DIR}/src/glfw3.pc.in" - "${GLFW_BINARY_DIR}/src/glfw3.pc" @ONLY) - #-------------------------------------------------------------------- # Add subdirectories #-------------------------------------------------------------------- @@ -522,32 +491,79 @@ if (DOXYGEN_FOUND AND GLFW_BUILD_DOCS) add_subdirectory(docs) endif() +#-------------------------------------------------------------------- +# Create generated files +#-------------------------------------------------------------------- +include(CMakePackageConfigHelpers) +include(GNUInstallDirs) + +set(GLFW_INSTALL_CONFIG_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/glfw3") +set(GLFW_INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + +write_basic_package_version_file( + glfw3ConfigVersion.cmake + VERSION ${GLFW_VERSION_FULL} + COMPATIBILITY SameMajorVersion) + +# build tree package export +configure_package_config_file(src/glfw3Config.cmake.in + glfw3Config.cmake + INSTALL_DESTINATION ${GLFW_BINARY_DIR} + PATH_VARS CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR + NO_CHECK_REQUIRED_COMPONENTS_MACRO) + +export( + EXPORT glfwTargets + FILE "${GLFW_BINARY_DIR}/glfw3Targets.cmake") + +export(PACKAGE glfw3) + +if (GLFW_BUILD_DOCS) + configure_file(docs/Doxyfile.in + docs/Doxyfile @ONLY) +endif() + +configure_file(src/glfw_config.h.in + src/glfw_config.h @ONLY) + +configure_file(src/glfw3.pc.in + src/glfw3.pc @ONLY) + #-------------------------------------------------------------------- # Install files other than the library # The library is installed by src/CMakeLists.txt #-------------------------------------------------------------------- if (GLFW_INSTALL) - install(DIRECTORY include/GLFW DESTINATION ${GLFW_INSTALL_INCLUDE_DIR} - FILES_MATCHING PATTERN glfw3.h PATTERN glfw3native.h) + configure_package_config_file(src/glfw3Config.cmake.in + ${GLFW_INSTALL_CONFIG_DIR}/glfw3Config.cmake + INSTALL_DESTINATION ${GLFW_INSTALL_CONFIG_DIR} + PATH_VARS CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR + NO_CHECK_REQUIRED_COMPONENTS_MACRO) - install(FILES "${GLFW_BINARY_DIR}/src/glfw3Config.cmake" - "${GLFW_BINARY_DIR}/src/glfw3ConfigVersion.cmake" - DESTINATION ${GLFW_INSTALL_CONFIG_DIR}) + install( + DIRECTORY include/GLFW + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + FILES_MATCHING PATTERN *.h) - export( - EXPORT glfwTargets - FILE ${CMAKE_CURRENT_BINARY_DIR}/src/glfw3Targets.cmake) + install( + FILES + ${GLFW_INSTALL_CONFIG_DIR}/glfw3Config.cmake + glfw3ConfigVersion.cmake + DESTINATION ${GLFW_INSTALL_CONFIG_DIR}) - install(EXPORT glfwTargets FILE glfw3Targets.cmake - DESTINATION ${GLFW_INSTALL_CONFIG_DIR}) + install( + EXPORT glfwTargets + FILE glfw3Targets.cmake + DESTINATION ${GLFW_INSTALL_CONFIG_DIR}) - install(FILES "${GLFW_BINARY_DIR}/src/glfw3.pc" - DESTINATION ${GLFW_INSTALL_PKGCONFIG_DIR}) + install( + FILES "${GLFW_BINARY_DIR}/src/glfw3.pc" + DESTINATION ${GLFW_INSTALL_PKGCONFIG_DIR}) # Only generate this target if no higher-level project already has if (NOT TARGET uninstall) - configure_file("${GLFW_SOURCE_DIR}/cmake_uninstall.cmake.in" - "${GLFW_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) + configure_file(cmake_uninstall.cmake.in + cmake_uninstall.cmake IMMEDIATE @ONLY) add_custom_target(uninstall "${CMAKE_COMMAND}" -P diff --git a/src/glfw3Config.cmake.in b/src/glfw3Config.cmake.in index 420a3feae..a5deb6727 100644 --- a/src/glfw3Config.cmake.in +++ b/src/glfw3Config.cmake.in @@ -8,8 +8,8 @@ set(GLFW3_VERSION "@GLFW_VERSION_FULL@") @PACKAGE_INIT@ -set_and_check(GLFW3_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_PREFIX@/@GLFW_INSTALL_INCLUDE_DIR@") -set_and_check(GLFW3_LIBRARY_DIR "@PACKAGE_CMAKE_INSTALL_PREFIX@/@GLFW_INSTALL_INCLUDE_DIR@") +set_and_check(GLFW3_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") +set_and_check(GLFW3_LIBRARY_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@") include("${CMAKE_CURRENT_LIST_DIR}/glfw3Targets.cmake") set(GLFW3_LIBRARY glfw)