Skip to content

Commit 0bc856a

Browse files
authored
Merge pull request Tencent#894 from belveder79/master
update to create config file which is independent from actual install…
2 parents bba388b + b91c515 commit 0bc856a

File tree

2 files changed

+44
-12
lines changed

2 files changed

+44
-12
lines changed

CMakeLists.txt

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -173,15 +173,35 @@ install(DIRECTORY example/
173173
# Provide config and version files to be used by other applications
174174
# ===============================
175175

176-
export(PACKAGE ${PROJECT_NAME})
177-
178-
# cmake-modules
179-
CONFIGURE_FILE(${PROJECT_NAME}Config.cmake.in
180-
${PROJECT_NAME}Config.cmake
181-
@ONLY)
182-
CONFIGURE_FILE(${PROJECT_NAME}ConfigVersion.cmake.in
183-
${PROJECT_NAME}ConfigVersion.cmake
184-
@ONLY)
176+
################################################################################
177+
# Export package for use from the build tree
178+
EXPORT( PACKAGE ${PROJECT_NAME} )
179+
180+
# Create the RapidJSONConfig.cmake file for other cmake projects.
181+
# ... for the build tree
182+
SET( CONFIG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
183+
SET( CONFIG_DIR ${CMAKE_CURRENT_BINARY_DIR})
184+
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in
185+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake @ONLY )
186+
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}ConfigVersion.cmake.in
187+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake @ONLY)
188+
189+
# ... for the install tree
190+
SET( CMAKECONFIG_INSTALL_DIR lib/cmake/${PROJECT_NAME} )
191+
FILE( RELATIVE_PATH REL_INCLUDE_DIR
192+
"${CMAKE_INSTALL_PREFIX}/${CMAKECONFIG_INSTALL_DIR}"
193+
"${CMAKE_INSTALL_PREFIX}/include" )
194+
195+
SET( ${PROJECT_NAME}_INCLUDE_DIR "\${${PROJECT_NAME}_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
196+
SET( CONFIG_SOURCE_DIR )
197+
SET( CONFIG_DIR )
198+
CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}Config.cmake.in
199+
${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake @ONLY )
200+
201+
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake"
202+
DESTINATION ${CMAKECONFIG_INSTALL_DIR} )
203+
204+
# Install files
185205
INSTALL(FILES
186206
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
187207
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake

RapidJSONConfig.cmake.in

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1-
get_filename_component(RAPIDJSON_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
2-
set(RAPIDJSON_INCLUDE_DIRS "@INCLUDE_INSTALL_DIR@")
3-
message(STATUS "RapidJSON found. Headers: ${RAPIDJSON_INCLUDE_DIRS}")
1+
################################################################################
2+
# RapidJSON source dir
3+
set( RapidJSON_SOURCE_DIR "@CONFIG_SOURCE_DIR@")
4+
5+
################################################################################
6+
# RapidJSON build dir
7+
set( RapidJSON_DIR "@CONFIG_DIR@")
8+
9+
################################################################################
10+
# Compute paths
11+
get_filename_component(RapidJSON_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
12+
13+
set( RapidJSON_INCLUDE_DIR "@RapidJSON_INCLUDE_DIR@" )
14+
set( RapidJSON_INCLUDE_DIRS "@RapidJSON_INCLUDE_DIR@" )
15+
message(STATUS "RapidJSON found. Headers: ${RapidJSON_INCLUDE_DIRS}")

0 commit comments

Comments
 (0)