1
1
OPTION (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
+
2
4
IF (BUILD_SHARED_LIBS )
3
5
SET (JSONCPP_LIB_BUILD_SHARED ON )
4
6
ENDIF (BUILD_SHARED_LIBS )
5
7
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
-
13
8
if ( CMAKE_COMPILER_IS_GNUCXX )
14
9
#Get compiler version.
15
10
execute_process ( COMMAND ${CMAKE_CXX_COMPILER} -dumpversion
@@ -36,35 +31,56 @@ SET( PUBLIC_HEADERS
36
31
37
32
SOURCE_GROUP ( "Public API" FILES ${PUBLIC_HEADERS} )
38
33
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 )
51
59
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
54
74
$< INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR} >
55
75
$< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /${JSONCPP_INCLUDE_DIR} >
56
76
)
57
- ENDIF (NOT CMAKE_VERSION VERSION_LESS 2.8.11 )
77
+ ENDIF (NOT CMAKE_VERSION VERSION_LESS 2.8.11 )
78
+
79
+ ENDIF ()
58
80
59
81
# Install instructions for this target
60
82
IF (JSONCPP_WITH_CMAKE_PACKAGE )
61
83
SET (INSTALL_EXPORT EXPORT jsoncpp )
62
84
ELSE (JSONCPP_WITH_CMAKE_PACKAGE )
63
85
SET (INSTALL_EXPORT )
64
86
ENDIF (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