11OPTION (JSONCPP_LIB_BUILD_SHARED "Build jsoncpp_lib as a shared library." OFF )
2+ OPTION (JSONCPP_LIB_BUILD_STATIC "Build jsoncpp_lib static library." ON )
3+
24IF (BUILD_SHARED_LIBS )
35 SET (JSONCPP_LIB_BUILD_SHARED ON )
46ENDIF (BUILD_SHARED_LIBS )
57
6- IF (JSONCPP_LIB_BUILD_SHARED)
7- SET (JSONCPP_LIB_TYPE SHARED)
8- ADD_DEFINITIONS ( -DJSON_DLL_BUILD )
9- ELSE (JSONCPP_LIB_BUILD_SHARED )
10- SET (JSONCPP_LIB_TYPE STATIC)
11- ENDIF (JSONCPP_LIB_BUILD_SHARED )
12-
138if ( CMAKE_COMPILER_IS_GNUCXX )
149 #Get compiler version.
1510 execute_process ( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
@@ -36,35 +31,56 @@ SET( PUBLIC_HEADERS
3631
3732SOURCE_GROUP ( "Public API" FILES ${PUBLIC_HEADERS} )
3833
39- ADD_LIBRARY ( jsoncpp_lib ${JSONCPP_LIB_TYPE}
40- ${PUBLIC_HEADERS}
41- json_tool.h
42- json_reader.cpp
43- json_batchallocator.h
44- json_valueiterator.inl
45- json_value.cpp
46- json_writer.cpp
47- version .h.in
48- )
49- SET_TARGET_PROPERTIES ( jsoncpp_lib PROPERTIES OUTPUT_NAME jsoncpp )
50- SET_TARGET_PROPERTIES ( jsoncpp_lib PROPERTIES VERSION ${JSONCPP_VERSION} SOVERSION ${JSONCPP_VERSION_MAJOR} )
34+ SET (jsoncpp_sources
35+ json_tool.h
36+ json_reader.cpp
37+ json_batchallocator.h
38+ json_valueiterator.inl
39+ json_value.cpp
40+ json_writer.cpp
41+ version.h.in)
42+
43+ IF (JSONCPP_LIB_BUILD_SHARED)
44+ ADD_DEFINITIONS ( -DJSON_DLL_BUILD )
45+ ADD_LIBRARY (jsoncpp_lib SHARED ${PUBLIC_HEADERS} ${jsoncpp_sources} )
46+ SET_TARGET_PROPERTIES ( jsoncpp_lib PROPERTIES VERSION ${JSONCPP_VERSION} SOVERSION ${JSONCPP_VERSION_MAJOR} )
47+ SET_TARGET_PROPERTIES ( jsoncpp_lib PROPERTIES OUTPUT_NAME jsoncpp )
48+
49+ INSTALL ( TARGETS jsoncpp_lib ${INSTALL_EXPORT}
50+ RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}
51+ LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
52+ ARCHIVE DESTINATION ${ARCHIVE_INSTALL_DIR} )
53+
54+ IF (NOT CMAKE_VERSION VERSION_LESS 2.8.11)
55+ TARGET_INCLUDE_DIRECTORIES ( jsoncpp_lib PUBLIC
56+ $<INSTALL_INTERFACE :${INCLUDE_INSTALL_DIR} >
57+ $<BUILD_INTERFACE :${CMAKE_CURRENT_LIST_DIR} /${JSONCPP_INCLUDE_DIR} >)
58+ ENDIF (NOT CMAKE_VERSION VERSION_LESS 2.8.11 )
5159
52- IF (NOT CMAKE_VERSION VERSION_LESS 2.8.11)
53- TARGET_INCLUDE_DIRECTORIES ( jsoncpp_lib PUBLIC
60+ ENDIF ()
61+
62+ IF (JSONCPP_LIB_BUILD_STATIC)
63+ ADD_LIBRARY (jsoncpp_lib_static STATIC ${PUBLIC_HEADERS} ${jsoncpp_sources} )
64+ SET_TARGET_PROPERTIES ( jsoncpp_lib_static PROPERTIES VERSION ${JSONCPP_VERSION} SOVERSION ${JSONCPP_VERSION_MAJOR} )
65+ SET_TARGET_PROPERTIES ( jsoncpp_lib_static PROPERTIES OUTPUT_NAME jsoncpp )
66+
67+ INSTALL ( TARGETS jsoncpp_lib_static ${INSTALL_EXPORT}
68+ RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}
69+ LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
70+ ARCHIVE DESTINATION ${ARCHIVE_INSTALL_DIR} )
71+
72+ IF (NOT CMAKE_VERSION VERSION_LESS 2.8.11)
73+ TARGET_INCLUDE_DIRECTORIES ( jsoncpp_lib_static PUBLIC
5474 $<INSTALL_INTERFACE :${INCLUDE_INSTALL_DIR} >
5575 $<BUILD_INTERFACE :${CMAKE_CURRENT_LIST_DIR} /${JSONCPP_INCLUDE_DIR} >
5676 )
57- ENDIF (NOT CMAKE_VERSION VERSION_LESS 2.8.11 )
77+ ENDIF (NOT CMAKE_VERSION VERSION_LESS 2.8.11 )
78+
79+ ENDIF ()
5880
5981# Install instructions for this target
6082IF (JSONCPP_WITH_CMAKE_PACKAGE)
6183 SET (INSTALL_EXPORT EXPORT jsoncpp)
6284ELSE (JSONCPP_WITH_CMAKE_PACKAGE )
6385 SET (INSTALL_EXPORT)
6486ENDIF (JSONCPP_WITH_CMAKE_PACKAGE )
65-
66- INSTALL ( TARGETS jsoncpp_lib ${INSTALL_EXPORT}
67- RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}
68- LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
69- ARCHIVE DESTINATION ${ARCHIVE_INSTALL_DIR}
70- )
0 commit comments