Package hunterized.

This commit is contained in:
Olli Wang 2019-02-27 19:56:05 +08:00
parent 4206ca66d8
commit 6fbb7f2074
3 changed files with 64 additions and 64 deletions

View File

@ -4,17 +4,18 @@
# see http://www.cmake.org/Wiki/CMake_Policies # see http://www.cmake.org/Wiki/CMake_Policies
cmake_minimum_required(VERSION 3.1) cmake_minimum_required(VERSION 3.1)
include(CheckCXXCompilerFlag) include(CMakePackageConfigHelpers)
### ###
### Project settings ### Project settings
### ###
project(YAML_CPP) project(yaml-cpp)
set(YAML_CPP_VERSION_MAJOR "0") include(CheckCXXCompilerFlag)
set(YAML_CPP_VERSION_MINOR "6") set(yaml-cpp_VERSION_MAJOR "0")
set(YAML_CPP_VERSION_PATCH "2") set(yaml-cpp_VERSION_MINOR "6")
set(YAML_CPP_VERSION "${YAML_CPP_VERSION_MAJOR}.${YAML_CPP_VERSION_MINOR}.${YAML_CPP_VERSION_PATCH}") set(yaml-cpp_VERSION_PATCH "2")
set(yaml-cpp_VERSION "${yaml-cpp_VERSION_MAJOR}.${yaml-cpp_VERSION_MINOR}.${yaml-cpp_VERSION_PATCH}")
### ###
@ -105,8 +106,8 @@ if(VERBOSE)
endif() endif()
if (CMAKE_VERSION VERSION_LESS 2.8.12) if (CMAKE_VERSION VERSION_LESS 2.8.12)
include_directories(${YAML_CPP_SOURCE_DIR}/src) include_directories(${yaml-cpp_SOURCE_DIR}/src)
include_directories(${YAML_CPP_SOURCE_DIR}/include) include_directories(${yaml-cpp_SOURCE_DIR}/include)
endif() endif()
@ -135,7 +136,7 @@ endif()
if(WIN32) if(WIN32)
if(BUILD_SHARED_LIBS) if(BUILD_SHARED_LIBS)
add_definitions(-D${PROJECT_NAME}_DLL) # use or build Windows DLL add_definitions(-DYAML_CPP_DLL) # use or build Windows DLL
endif() endif()
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX "C:/") set(CMAKE_INSTALL_PREFIX "C:/")
@ -143,9 +144,9 @@ if(WIN32)
endif() endif()
# GCC or Clang or Intel Compiler specialities # GCC or Clang or Intel Compiler specialities
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU" OR
(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") OR (${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC") OR
CMAKE_CXX_COMPILER_ID MATCHES "Intel") ${CMAKE_CXX_COMPILER_ID} MATCHES "Intel")
### General stuff ### General stuff
if(WIN32) if(WIN32)
@ -161,10 +162,6 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR
# #
set(GCC_EXTRA_OPTIONS "") set(GCC_EXTRA_OPTIONS "")
# #
if(BUILD_SHARED_LIBS)
set(GCC_EXTRA_OPTIONS "${GCC_EXTRA_OPTIONS} -fPIC")
endif()
#
set(FLAG_TESTED "-Wextra") set(FLAG_TESTED "-Wextra")
check_cxx_compiler_flag(${FLAG_TESTED} FLAG_WEXTRA) check_cxx_compiler_flag(${FLAG_TESTED} FLAG_WEXTRA)
if(FLAG_WEXTRA) if(FLAG_WEXTRA)
@ -209,14 +206,13 @@ if(MSVC)
endif() endif()
# correct linker options # correct linker options
foreach(flag_var CMAKE_C_FLAGS CMAKE_CXX_FLAGS) foreach(flag_var yaml_c_flags yaml_cxx_flags)
foreach(config_name "" DEBUG RELEASE MINSIZEREL RELWITHDEBINFO) foreach(config_name "" DEBUG RELEASE MINSIZEREL RELWITHDEBINFO)
set(var_name "${flag_var}") set(var_name "${flag_var}")
if(NOT "${config_name}" STREQUAL "") if(NOT "${config_name}" STREQUAL "")
set(var_name "${var_name}_${config_name}") set(var_name "${var_name}_${config_name}")
endif() endif()
string(REPLACE "/MD" "${LIB_RT_OPTION}" ${var_name} "${${var_name}}") string(REPLACE "/MD" "${LIB_RT_OPTION}" ${var_name} "${${var_name}}")
set(${var_name} "${${var_name}}" CACHE STRING "" FORCE)
endforeach() endforeach()
endforeach() endforeach()
endif() endif()
@ -262,9 +258,9 @@ add_library(yaml-cpp ${library_sources})
if (NOT CMAKE_VERSION VERSION_LESS 2.8.12) if (NOT CMAKE_VERSION VERSION_LESS 2.8.12)
target_include_directories(yaml-cpp target_include_directories(yaml-cpp
PUBLIC $<BUILD_INTERFACE:${YAML_CPP_SOURCE_DIR}/include> PUBLIC $<BUILD_INTERFACE:${yaml-cpp_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${INCLUDE_INSTALL_ROOT_DIR}> $<INSTALL_INTERFACE:${INCLUDE_INSTALL_ROOT_DIR}>
PRIVATE $<BUILD_INTERFACE:${YAML_CPP_SOURCE_DIR}/src>) PRIVATE $<BUILD_INTERFACE:${yaml-cpp_SOURCE_DIR}/src>)
endif() endif()
set_target_properties(yaml-cpp PROPERTIES set_target_properties(yaml-cpp PROPERTIES
@ -272,8 +268,8 @@ set_target_properties(yaml-cpp PROPERTIES
) )
set_target_properties(yaml-cpp PROPERTIES set_target_properties(yaml-cpp PROPERTIES
VERSION "${YAML_CPP_VERSION}" VERSION "${yaml-cpp_VERSION}"
SOVERSION "${YAML_CPP_VERSION_MAJOR}.${YAML_CPP_VERSION_MINOR}" SOVERSION "${yaml-cpp_VERSION_MAJOR}.${yaml-cpp_VERSION_MINOR}"
PROJECT_LABEL "yaml-cpp ${LABEL_SUFFIX}" PROJECT_LABEL "yaml-cpp ${LABEL_SUFFIX}"
) )
@ -295,7 +291,7 @@ if(MSVC)
endif() endif()
endif() endif()
if (YAML_CPP_INSTALL) if (yaml-cpp_INSTALL)
install(TARGETS yaml-cpp EXPORT yaml-cpp-targets ${_INSTALL_DESTINATIONS}) install(TARGETS yaml-cpp EXPORT yaml-cpp-targets ${_INSTALL_DESTINATIONS})
install( install(
DIRECTORY ${header_directory} DIRECTORY ${header_directory}
@ -304,37 +300,49 @@ if (YAML_CPP_INSTALL)
) )
endif() endif()
export( set(include_install_dir "include")
TARGETS yaml-cpp set(lib_install_dir "lib")
FILE "${PROJECT_BINARY_DIR}/yaml-cpp-targets.cmake") set(config_install_dir "lib/cmake/${PROJECT_NAME}")
export(PACKAGE yaml-cpp) set(config_export_name "${PROJECT_NAME}Config")
set(EXPORT_TARGETS yaml-cpp CACHE INTERNAL "export targets") set(targets_export_name "${PROJECT_NAME}Targets")
set(project_config "${CMAKE_CURRENT_BINARY_DIR}/${config_export_name}.cmake")
set(CONFIG_INCLUDE_DIRS "${YAML_CPP_SOURCE_DIR}/include") set(version_config "${CMAKE_CURRENT_BINARY_DIR}/${config_export_name}Version.cmake")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/yaml-cpp-config.cmake.in set(namespace "${PROJECT_NAME}::")
"${PROJECT_BINARY_DIR}/yaml-cpp-config.cmake" @ONLY)
if(WIN32 AND NOT CYGWIN)
set(INSTALL_CMAKE_DIR CMake)
else()
set(INSTALL_CMAKE_DIR ${LIB_INSTALL_DIR}/cmake/yaml-cpp)
endif()
file(RELATIVE_PATH REL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}" "${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_ROOT_DIR}") configure_package_config_file( # Uses target_exports_name
set(CONFIG_INCLUDE_DIRS "\${YAML_CPP_CMAKE_DIR}/${REL_INCLUDE_DIR}") "yaml-cpp-config.cmake.in"
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/yaml-cpp-config.cmake.in "${project_config}"
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/yaml-cpp-config.cmake" @ONLY) INSTALL_DESTINATION "${config_install_dir}")
write_basic_package_version_file(
"${version_config}"
VERSION ${yaml-cpp_VERSION}
COMPATIBILITY SameMajorVersion)
install(TARGETS yaml-cpp
EXPORT "${targets_export_name}"
INCLUDES DESTINATION "${include_install_dir}"
RUNTIME DESTINATION ${LIB_INSTALL_DIR}
LIBRARY DESTINATION ${lib_install_dir}
ARCHIVE DESTINATION ${lib_install_dir}
PUBLIC_HEADER DESTINATION ${include_install_dir})
install(
EXPORT "${targets_export_name}"
NAMESPACE "${namespace}"
DESTINATION "${config_install_dir}")
install(
FILES "${project_config}" "${version_config}"
DESTINATION "${config_install_dir}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/yaml-cpp-config-version.cmake.in
"${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" @ONLY)
if (YAML_CPP_INSTALL) if (YAML_CPP_INSTALL)
install(FILES install(
"${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/yaml-cpp-config.cmake" DIRECTORY include/yaml-cpp
"${PROJECT_BINARY_DIR}/yaml-cpp-config-version.cmake" DESTINATION include)
DESTINATION "${INSTALL_CMAKE_DIR}" COMPONENT dev)
install(EXPORT yaml-cpp-targets DESTINATION ${INSTALL_CMAKE_DIR})
if(UNIX) if(UNIX)
set(PC_FILE ${CMAKE_BINARY_DIR}/yaml-cpp.pc) set(PC_FILE ${CMAKE_BINARY_DIR}/yaml-cpp.pc)
@ -348,11 +356,11 @@ endif()
### ###
### Extras ### Extras
### ###
if(YAML_CPP_BUILD_TESTS) if(yaml-cpp_BUILD_TESTS)
enable_testing() enable_testing()
add_subdirectory(test) add_subdirectory(test)
endif() endif()
if(YAML_CPP_BUILD_TOOLS) if(yaml-cpp_BUILD_TOOLS)
add_subdirectory(util) add_subdirectory(util)
endif() endif()

View File

@ -43,8 +43,8 @@ file(GLOB test_new_api_sources new-api/[a-z]*.cpp)
list(APPEND test_sources ${test_new_api_sources}) list(APPEND test_sources ${test_new_api_sources})
add_sources(${test_sources} ${test_headers}) add_sources(${test_sources} ${test_headers})
include_directories(${YAML_CPP_SOURCE_DIR}/src) include_directories(${yaml-cpp_SOURCE_DIR}/src)
include_directories(${YAML_CPP_SOURCE_DIR}/test) include_directories(${yaml-cpp_SOURCE_DIR}/test)
add_executable(run-tests add_executable(run-tests
${test_sources} ${test_sources}

View File

@ -1,14 +1,6 @@
# - Config file for the yaml-cpp package @PACKAGE_INIT@
# It defines the following variables
# YAML_CPP_INCLUDE_DIR - include directory
# YAML_CPP_LIBRARIES - libraries to link against
# Compute paths
get_filename_component(YAML_CPP_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
set(YAML_CPP_INCLUDE_DIR "@CONFIG_INCLUDE_DIRS@")
# Our library dependencies (contains definitions for IMPORTED targets) # Our library dependencies (contains definitions for IMPORTED targets)
include("${YAML_CPP_CMAKE_DIR}/yaml-cpp-targets.cmake") include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake")
check_required_components("@PROJECT_NAME@")
# These are IMPORTED targets created by yaml-cpp-targets.cmake
set(YAML_CPP_LIBRARIES "@EXPORT_TARGETS@")