Merge pull request #1901 from JackBoosY/master

Use modern cmake function export to generate target
This commit is contained in:
Milo Yip 2023-08-14 18:08:52 +08:00 committed by GitHub
commit 30f54566ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 16 deletions

View File

@ -195,6 +195,11 @@ install(FILES readme.md
DESTINATION "${DOC_INSTALL_DIR}" DESTINATION "${DOC_INSTALL_DIR}"
COMPONENT doc) COMPONENT doc)
# Add an interface target to export it
add_library(RapidJSON INTERFACE)
target_include_directories(RapidJSON INTERFACE $<INSTALL_INTERFACE:include/rapidjson>)
install(DIRECTORY include/rapidjson install(DIRECTORY include/rapidjson
DESTINATION "${INCLUDE_INSTALL_DIR}" DESTINATION "${INCLUDE_INSTALL_DIR}"
COMPONENT dev) COMPONENT dev)
@ -221,6 +226,7 @@ SET( CONFIG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
SET( CONFIG_DIR ${CMAKE_CURRENT_BINARY_DIR}) SET( CONFIG_DIR ${CMAKE_CURRENT_BINARY_DIR})
SET( ${PROJECT_NAME}_INCLUDE_DIR "\${${PROJECT_NAME}_SOURCE_DIR}/include" ) SET( ${PROJECT_NAME}_INCLUDE_DIR "\${${PROJECT_NAME}_SOURCE_DIR}/include" )
INCLUDE(CMakePackageConfigHelpers)
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY ) ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY )
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}ConfigVersion.cmake.in CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}ConfigVersion.cmake.in
@ -243,9 +249,12 @@ INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAM
# Install files # Install files
IF(CMAKE_INSTALL_DIR) IF(CMAKE_INSTALL_DIR)
INSTALL(FILES INSTALL(FILES
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION "${CMAKE_INSTALL_DIR}" DESTINATION "${CMAKE_INSTALL_DIR}"
COMPONENT dev) COMPONENT dev)
INSTALL(TARGETS RapidJSON EXPORT RapidJSON-targets)
INSTALL(EXPORT RapidJSON-targets DESTINATION ${CMAKE_INSTALL_DIR})
ENDIF() ENDIF()

View File

@ -1,6 +1,6 @@
################################################################################ @PACKAGE_INIT@
# CMake minimum version required
cmake_minimum_required(VERSION 3.0) include ("${CMAKE_CURRENT_LIST_DIR}/RapidJSON-targets.cmake")
################################################################################ ################################################################################
# RapidJSON source dir # RapidJSON source dir
@ -14,12 +14,6 @@ set( RapidJSON_DIR "@CONFIG_DIR@")
# Compute paths # Compute paths
get_filename_component(RapidJSON_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) get_filename_component(RapidJSON_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
set( RapidJSON_INCLUDE_DIR "@RapidJSON_INCLUDE_DIR@" ) get_target_property(RapidJSON_INCLUDE_DIR RapidJSON INTERFACE_INCLUDE_DIRECTORIES)
set( RapidJSON_INCLUDE_DIRS "@RapidJSON_INCLUDE_DIR@" )
message(STATUS "RapidJSON found. Headers: ${RapidJSON_INCLUDE_DIRS}")
if(NOT TARGET rapidjson) set( RapidJSON_INCLUDE_DIRS ${RapidJSON_INCLUDE_DIR} )
add_library(rapidjson INTERFACE IMPORTED)
set_property(TARGET rapidjson PROPERTY
INTERFACE_INCLUDE_DIRECTORIES ${RapidJSON_INCLUDE_DIRS})
endif()