From 5c1ae47d607c4323c3519e955e3fe546e747e190 Mon Sep 17 00:00:00 2001 From: Sergiu Deitsch Date: Mon, 5 Dec 2016 10:38:55 +0100 Subject: [PATCH] cmake: make yaml-cpp package relocatable --- CMakeLists.txt | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a082038..ca67ddb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -264,15 +264,15 @@ else() set(_library_dir lib) endif() -set(INCLUDE_INSTALL_ROOT_DIR ${CMAKE_INSTALL_PREFIX}/include) +set(INCLUDE_INSTALL_ROOT_DIR include) set(INCLUDE_INSTALL_DIR ${INCLUDE_INSTALL_ROOT_DIR}/yaml-cpp) -set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${_library_dir}${LIB_SUFFIX}") +set(LIB_INSTALL_DIR ${_library_dir}${LIB_SUFFIX}) set(_INSTALL_DESTINATIONS - RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin + RUNTIME DESTINATION bin LIBRARY DESTINATION ${LIB_INSTALL_DIR} - ARCHIVE DESTINATION "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" + ARCHIVE DESTINATION "lib${LIB_SUFFIX}" ) @@ -321,18 +321,22 @@ export( export(PACKAGE yaml-cpp) set(EXPORT_TARGETS yaml-cpp CACHE INTERNAL "export targets") +if(NOT CMAKE_VERSION VERSION_LESS 2.8.11) + # Make yaml-cpp-config.cmake usable from the build tree and relocatable. CMake + # users below version 2.8.11 are out of luck. + target_include_directories(yaml-cpp PUBLIC + $ + $ + ) +endif(NOT CMAKE_VERSION VERSION_LESS 2.8.11) + set(CONFIG_INCLUDE_DIRS "${YAML_CPP_SOURCE_DIR}/include") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/yaml-cpp-config.cmake.in "${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake" @ONLY) -if(WIN32 AND NOT CYGWIN) - set(INSTALL_CMAKE_DIR ${CMAKE_INSTALL_PREFIX}/CMake) -else() - set(INSTALL_CMAKE_DIR ${LIB_INSTALL_DIR}/cmake/yaml-cpp) -endif() +set(INSTALL_CMAKE_DIR lib${LIB_SUFFIX}/cmake/yaml-cpp) -file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${INCLUDE_INSTALL_ROOT_DIR}") -set(CONFIG_INCLUDE_DIRS "\${YAML_CPP_CMAKE_DIR}/${REL_INCLUDE_DIR}") +set(CONFIG_INCLUDE_DIRS "\${YAML_CPP_CMAKE_DIR}/../../../include") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/yaml-cpp-config.cmake.in "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/yaml-cpp-config.cmake" @ONLY)