Use GNUInstallDirs, enable build tree export

This commit is contained in:
Zbigniew Mandziejewicz 2015-04-09 11:19:21 +08:00
parent a89f9680ec
commit 14c867d2c9
2 changed files with 63 additions and 47 deletions

View File

@ -474,37 +474,6 @@ else()
set(GLFW_LIB_NAME glfw3) set(GLFW_LIB_NAME glfw3)
endif() 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 # Add subdirectories
#-------------------------------------------------------------------- #--------------------------------------------------------------------
@ -522,32 +491,79 @@ if (DOXYGEN_FOUND AND GLFW_BUILD_DOCS)
add_subdirectory(docs) add_subdirectory(docs)
endif() 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 # Install files other than the library
# The library is installed by src/CMakeLists.txt # The library is installed by src/CMakeLists.txt
#-------------------------------------------------------------------- #--------------------------------------------------------------------
if (GLFW_INSTALL) if (GLFW_INSTALL)
install(DIRECTORY include/GLFW DESTINATION ${GLFW_INSTALL_INCLUDE_DIR} configure_package_config_file(src/glfw3Config.cmake.in
FILES_MATCHING PATTERN glfw3.h PATTERN glfw3native.h) ${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" install(
"${GLFW_BINARY_DIR}/src/glfw3ConfigVersion.cmake" DIRECTORY include/GLFW
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN *.h)
install(
FILES
${GLFW_INSTALL_CONFIG_DIR}/glfw3Config.cmake
glfw3ConfigVersion.cmake
DESTINATION ${GLFW_INSTALL_CONFIG_DIR}) DESTINATION ${GLFW_INSTALL_CONFIG_DIR})
export( install(
EXPORT glfwTargets EXPORT glfwTargets
FILE ${CMAKE_CURRENT_BINARY_DIR}/src/glfw3Targets.cmake) FILE glfw3Targets.cmake
install(EXPORT glfwTargets FILE glfw3Targets.cmake
DESTINATION ${GLFW_INSTALL_CONFIG_DIR}) DESTINATION ${GLFW_INSTALL_CONFIG_DIR})
install(FILES "${GLFW_BINARY_DIR}/src/glfw3.pc" install(
FILES "${GLFW_BINARY_DIR}/src/glfw3.pc"
DESTINATION ${GLFW_INSTALL_PKGCONFIG_DIR}) DESTINATION ${GLFW_INSTALL_PKGCONFIG_DIR})
# Only generate this target if no higher-level project already has # Only generate this target if no higher-level project already has
if (NOT TARGET uninstall) if (NOT TARGET uninstall)
configure_file("${GLFW_SOURCE_DIR}/cmake_uninstall.cmake.in" configure_file(cmake_uninstall.cmake.in
"${GLFW_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) cmake_uninstall.cmake IMMEDIATE @ONLY)
add_custom_target(uninstall add_custom_target(uninstall
"${CMAKE_COMMAND}" -P "${CMAKE_COMMAND}" -P

View File

@ -8,8 +8,8 @@ set(GLFW3_VERSION "@GLFW_VERSION_FULL@")
@PACKAGE_INIT@ @PACKAGE_INIT@
set_and_check(GLFW3_INCLUDE_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_PREFIX@/@GLFW_INSTALL_INCLUDE_DIR@") set_and_check(GLFW3_LIBRARY_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@")
include("${CMAKE_CURRENT_LIST_DIR}/glfw3Targets.cmake") include("${CMAKE_CURRENT_LIST_DIR}/glfw3Targets.cmake")
set(GLFW3_LIBRARY glfw) set(GLFW3_LIBRARY glfw)