Skip to content

Commit e384e49

Browse files
committed
Merge pull request #63 from dreifachstein/master
Allow customization of component install dirs Passed Travis CI.
2 parents 533dbe0 + dc84d96 commit e384e49

File tree

3 files changed

+34
-5
lines changed

3 files changed

+34
-5
lines changed

CMakeLists.txt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ OPTION(JSONCPP_WITH_TESTS "Compile and run JsonCpp test executables" ON)
66
OPTION(JSONCPP_WITH_POST_BUILD_UNITTEST "Automatically run unit-tests as a post build step" ON)
77
OPTION(JSONCPP_WITH_WARNING_AS_ERROR "Force compilation to fail if a warning occurs" OFF)
88
OPTION(JSONCPP_WITH_PKGCONFIG_SUPPORT "Generate and install .pc files" ON)
9+
OPTION(JSONCPP_WITH_CMAKE_PACKAGE "Generate and install cmake package files" OFF)
910

1011
# Ensures that CMAKE_BUILD_TYPE is visible in cmake-gui on Unix
1112
IF(NOT WIN32)
@@ -16,6 +17,18 @@ IF(NOT WIN32)
1617
ENDIF(NOT CMAKE_BUILD_TYPE)
1718
ENDIF(NOT WIN32)
1819

20+
SET(RUNTIME_INSTALL_DIR lib
21+
CACHE PATH "Install dir for executables and dlls")
22+
SET(ARCHIVE_INSTALL_DIR lib
23+
CACHE PATH "Install dir for static libraries")
24+
SET(LIBRARY_INSTALL_DIR lib
25+
CACHE PATH "Install dir for shared libraries")
26+
SET(INCLUDE_INSTALL_DIR include
27+
CACHE PATH "Install dir for headers")
28+
SET(PACKAGE_INSTALL_DIR lib/cmake
29+
CACHE PATH "Install dir for cmake package config files")
30+
MARK_AS_ADVANCED( RUNTIME_INSTALL_DIR ARCHIVE_INSTALL_DIR INCLUDE_INSTALL_DIR PACKAGE_INSTALL_DIR )
31+
1932
# This ensures shared DLL are in the same dir as executable on Windows.
2033
# Put all executables / libraries are in a project global directory.
2134
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib
@@ -91,6 +104,12 @@ IF(JSONCPP_WITH_PKGCONFIG_SUPPORT)
91104
DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
92105
ENDIF(JSONCPP_WITH_PKGCONFIG_SUPPORT)
93106

107+
IF(JSONCPP_WITH_CMAKE_PACKAGE)
108+
INSTALL(EXPORT jsoncpp
109+
DESTINATION ${PACKAGE_INSTALL_DIR}/jsoncpp
110+
FILE jsoncppConfig.cmake)
111+
ENDIF(JSONCPP_WITH_CMAKE_PACKAGE)
112+
94113
# Build the different applications
95114
ADD_SUBDIRECTORY( src )
96115

include/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
FILE(GLOB INCLUDE_FILES "json/*.h")
2-
INSTALL(FILES ${INCLUDE_FILES} DESTINATION include/json)
2+
INSTALL(FILES ${INCLUDE_FILES} DESTINATION ${INCLUDE_INSTALL_DIR}/json)

src/lib_json/CMakeLists.txt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,18 @@ SET_TARGET_PROPERTIES( jsoncpp_lib PROPERTIES OUTPUT_NAME jsoncpp )
4040
SET_TARGET_PROPERTIES( jsoncpp_lib PROPERTIES VERSION ${JSONCPP_VERSION} SOVERSION ${JSONCPP_VERSION_MAJOR} )
4141

4242
# Install instructions for this target
43-
INSTALL( TARGETS jsoncpp_lib
44-
RUNTIME DESTINATION bin
45-
LIBRARY DESTINATION lib
46-
ARCHIVE DESTINATION lib
43+
IF(JSONCPP_WITH_CMAKE_PACKAGE)
44+
TARGET_INCLUDE_DIRECTORIES( jsoncpp_lib
45+
PUBLIC $<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}>
46+
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/${JSON_INCLUDE_DIR}>
47+
)
48+
SET(INSTALL_EXPORT EXPORT jsoncpp)
49+
ELSE(JSONCPP_WITH_CMAKE_PACKAGE)
50+
SET(INSTALL_EXPORT)
51+
ENDIF(JSONCPP_WITH_CMAKE_PACKAGE)
52+
53+
INSTALL( TARGETS jsoncpp_lib ${INSTALL_EXPORT}
54+
RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}
55+
LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
56+
ARCHIVE DESTINATION ${ARCHIVE_INSTALL_DIR}
4757
)

0 commit comments

Comments
 (0)