From 626bc580272cba6ea11b81f14762dc61c4a88f9d Mon Sep 17 00:00:00 2001 From: Rich Mattes Date: Sat, 23 Aug 2014 12:07:14 -0400 Subject: [PATCH] Add option to enable GNU Install Dirs This commit adds an option to enable the GNUInstallDirs.cmake script and use it to define console_bridge's installation directories. When enabled, libraries, headers, and data are installed to paths defined by the GNUInstallDirs.cmake script. Otherwise, the hard-coded "lib", "share", and "include" strings are used, resulting in no change in functionality after this commit is applied. The option is diabled by default. Signed-off-by: Rich Mattes --- CMakeLists.txt | 22 +++++++++++++++++----- console_bridge-config.cmake.in | 2 +- console_bridge.pc.in | 4 ++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ab0ad99..2c1980b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,21 +30,33 @@ if(NOT DEFINED BUILD_SHARED_LIBS) option(BUILD_SHARED_LIBS "Build dynamically-linked binaries" ON) endif() +option(USE_GNU_INSTALL_DIRS "Use GNU Install Directories when installing" OFF) + +if (USE_GNU_INSTALL_DIRS) + include(GNUInstallDirs) +else() + set(CMAKE_INSTALL_DATAROOTDIR "share") + set(CMAKE_INSTALL_INCLUDEDIR "include") + set(CMAKE_INSTALL_LIBDIR "lib") +endif() + add_library(${PROJECT_NAME} src/console.cpp) target_link_libraries(${PROJECT_NAME} ${Boost_LIBRARIES}) install(TARGETS ${PROJECT_NAME} - DESTINATION lib/) + DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(DIRECTORY include/ - DESTINATION include - FILES_MATCHING PATTERN "*.h") + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + FILES_MATCHING PATTERN "*.h") set(PKG_NAME ${PROJECT_NAME}) set(PKG_LIBRARIES ${PROJECT_NAME}) set(cmake_conf_file "${PROJECT_NAME}-config.cmake") configure_file("${cmake_conf_file}.in" "${CMAKE_BINARY_DIR}/${cmake_conf_file}" @ONLY) -install(FILES "${CMAKE_BINARY_DIR}/${cmake_conf_file}" DESTINATION share/${PROJECT_NAME}/cmake/ COMPONENT cmake) +install(FILES "${CMAKE_BINARY_DIR}/${cmake_conf_file}" + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/cmake/ + COMPONENT cmake) if (NOT MSVC) set(PKG_DESC "Console Bridge") @@ -52,7 +64,7 @@ if (NOT MSVC) set(pkg_conf_file "console_bridge.pc") configure_file("${pkg_conf_file}.in" "${CMAKE_BINARY_DIR}/${pkg_conf_file}" @ONLY) install(FILES "${CMAKE_BINARY_DIR}/${pkg_conf_file}" - DESTINATION lib/pkgconfig/ COMPONENT pkgconfig) + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig/ COMPONENT pkgconfig) endif() SET_DIRECTORY_PROPERTIES(PROPERTIES diff --git a/console_bridge-config.cmake.in b/console_bridge-config.cmake.in index a64762b..c7a55fb 100644 --- a/console_bridge-config.cmake.in +++ b/console_bridge-config.cmake.in @@ -8,7 +8,7 @@ set(@PKG_NAME@_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/include") foreach(lib @PKG_LIBRARIES@) set(onelib "${lib}-NOTFOUND") find_library(onelib ${lib} - PATHS "@CMAKE_INSTALL_PREFIX@/lib" + PATHS "@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_LIBDIR@" NO_DEFAULT_PATH ) if(NOT onelib) diff --git a/console_bridge.pc.in b/console_bridge.pc.in index 443963e..1e8bebc 100644 --- a/console_bridge.pc.in +++ b/console_bridge.pc.in @@ -1,8 +1,8 @@ # This file was generated by CMake for @PROJECT_NAME@ prefix=@CMAKE_INSTALL_PREFIX@ exec_prefix=${prefix} -libdir=${prefix}/lib -includedir=${prefix}/include +libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ Name: @PKG_NAME@ Description: @PKG_DESC@ -- 2.0.4