@@ -38,7 +38,7 @@ foreach(pold "") # Currently Empty
38
38
endforeach ()
39
39
40
40
# ==== Define language standard configurations requiring at least c++11 standard
41
- if (CMAKE_CXX_STANDARD EQUAL "98" )
41
+ if (CMAKE_CXX_STANDARD EQUAL "98" )
42
42
message (FATAL_ERROR "CMAKE_CXX_STANDARD:STRING=98 is not supported." )
43
43
endif ()
44
44
@@ -62,19 +62,29 @@ if(NOT DEFINED CMAKE_BUILD_TYPE)
62
62
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel Coverage." )
63
63
endif ()
64
64
65
+ # ---------------------------------------------------------------------------
66
+ # use ccache if found, has to be done before project()
67
+ # ---------------------------------------------------------------------------
68
+ find_program (CCACHE_EXECUTABLE "ccache" HINTS /usr/local/bin /opt/local/bin)
69
+ if (CCACHE_EXECUTABLE)
70
+ message (STATUS "use ccache" )
71
+ set (CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_EXECUTABLE} " CACHE PATH "ccache" FORCE)
72
+ set (CMAKE_C_COMPILER_LAUNCHER "${CCACHE_EXECUTABLE} " CACHE PATH "ccache" FORCE)
73
+ endif ()
74
+
65
75
project (JSONCPP
66
76
# Note: version must be updated in three places when doing a release. This
67
77
# annoying process ensures that amalgamate, CMake, and meson all report the
68
78
# correct version.
69
- # 1. /meson.build
70
- # 2. /include/json/version.h
71
- # 3. /CMakeLists.txt
72
- # IMPORTANT: also update the SOVERSION !!
79
+ # 1. . /meson.build
80
+ # 2. . /include/json/version.h
81
+ # 3. . /CMakeLists.txt
82
+ # IMPORTANT: also update the JSONCPP_SOVERSION !!
73
83
VERSION 1.9.3 # <major>[.<minor>[.<patch>[.<tweak>]]]
74
84
LANGUAGES CXX)
75
85
76
86
message (STATUS "JsonCpp Version: ${JSONCPP_VERSION_MAJOR} .${JSONCPP_VERSION_MINOR} .${JSONCPP_VERSION_PATCH} " )
77
- set ( JSONCPP_SOVERSION 22 )
87
+ set (JSONCPP_SOVERSION 23 )
78
88
79
89
option (JSONCPP_WITH_TESTS "Compile and (for jsoncpp_check) run JsonCpp test executables" ON )
80
90
option (JSONCPP_WITH_POST_BUILD_UNITTEST "Automatically run unit-tests as a post build step" ON )
@@ -95,105 +105,99 @@ include(GNUInstallDirs)
95
105
96
106
set (DEBUG_LIBNAME_SUFFIX "" CACHE STRING "Optional suffix to append to the library name for a debug build" )
97
107
98
- set (JSONCPP_USE_SECURE_MEMORY "0" CACHE STRING "-D...=1 to use memory-wiping allocator for STL" )
108
+ set (JSONCPP_USE_SECURE_MEMORY "0" CACHE STRING "-D...=1 to use memory-wiping allocator for STL" )
99
109
100
- configure_file ( "${PROJECT_SOURCE_DIR} /version.in"
101
- "${PROJECT_BINARY_DIR} /version"
102
- NEWLINE_STYLE UNIX )
110
+ configure_file ("${PROJECT_SOURCE_DIR} /version.in"
111
+ "${PROJECT_BINARY_DIR} /version"
112
+ NEWLINE_STYLE UNIX )
103
113
104
- macro (UseCompilationWarningAsError )
114
+ macro (use_compilation_warning_as_error )
105
115
if (MSVC )
106
116
# Only enabled in debug because some old versions of VS STL generate
107
117
# warnings when compiled in release configuration.
108
118
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
109
- add_compile_options ($<$<CONFIG:Debug>:/WX>)
119
+ add_compile_options ($<$<CONFIG:Debug>:/WX>)
110
120
else ()
111
- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /WX " )
121
+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /WX " )
112
122
endif ()
113
123
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
114
124
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
115
- add_compile_options (-Werror)
125
+ add_compile_options (-Werror)
116
126
else ()
117
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror" )
127
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror" )
118
128
endif ()
119
129
if (JSONCPP_WITH_STRICT_ISO)
120
- if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
121
- add_compile_options (-pedantic-errors)
122
- else ()
123
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic-errors" )
124
- endif ()
130
+ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
131
+ add_compile_options (-pedantic-errors)
132
+ else ()
133
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic-errors" )
134
+ endif ()
125
135
endif ()
126
136
endif ()
127
137
endmacro ()
128
138
129
139
# Include our configuration header
130
- include_directories ( ${jsoncpp_SOURCE_DIR} /include )
140
+ include_directories (${jsoncpp_SOURCE_DIR} /include )
131
141
132
142
if (MSVC )
133
143
# Only enabled in debug because some old versions of VS STL generate
134
144
# unreachable code warning when compiled in release configuration.
135
145
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
136
- add_compile_options ($<$<CONFIG:Debug>:/W4>)
146
+ add_compile_options ($<$<CONFIG:Debug>:/W4>)
137
147
else ()
138
- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 " )
148
+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 " )
139
149
endif ()
140
150
endif ()
141
151
142
152
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
143
153
# using regular Clang or AppleClang
144
154
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
145
- add_compile_options (-Wall -Wconversion -Wshadow -Werror=conversion -Werror=sign-compare)
155
+ add_compile_options (-Wall -Wconversion -Wshadow -Werror=conversion -Werror=sign-compare)
146
156
else ()
147
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wconversion -Wshadow -Werror=conversion -Werror=sign-compare" )
157
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wconversion -Wshadow -Werror=conversion -Werror=sign-compare" )
148
158
endif ()
149
159
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
150
160
# using GCC
151
161
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
152
- add_compile_options (-Wall -Wconversion -Wshadow -Wextra)
162
+ add_compile_options (-Wall -Wconversion -Wshadow -Wextra)
153
163
else ()
154
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wconversion -Wshadow -Wextra" )
164
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wconversion -Wshadow -Wextra" )
155
165
endif ()
156
166
# not yet ready for -Wsign-conversion
157
167
158
168
if (JSONCPP_WITH_STRICT_ISO)
159
- if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
160
- add_compile_options (-pedantic )
161
- else ()
162
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic " )
163
- endif ()
169
+ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
170
+ add_compile_options (-Wpedantic )
171
+ else ()
172
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpedantic " )
173
+ endif ()
164
174
endif ()
165
175
if (JSONCPP_WITH_WARNING_AS_ERROR)
166
- if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
167
- add_compile_options (-Werror=conversion)
168
- else ()
169
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=conversion" )
170
- endif ()
176
+ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
177
+ add_compile_options (-Werror=conversion)
178
+ else ()
179
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=conversion" )
180
+ endif ()
171
181
endif ()
172
182
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel" )
173
183
# using Intel compiler
174
184
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
175
- add_compile_options (-Wall -Wconversion -Wshadow -Wextra -Werror=conversion)
185
+ add_compile_options (-Wall -Wconversion -Wshadow -Wextra -Werror=conversion)
176
186
else ()
177
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wconversion -Wshadow -Wextra -Werror=conversion" )
187
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wconversion -Wshadow -Wextra -Werror=conversion" )
178
188
endif ()
179
189
180
190
if (JSONCPP_WITH_STRICT_ISO AND NOT JSONCPP_WITH_WARNING_AS_ERROR)
181
- if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
182
- add_compile_options (-pedantic )
183
- else ()
184
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic " )
185
- endif ()
191
+ if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
192
+ add_compile_options (-Wpedantic )
193
+ else ()
194
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpedantic " )
195
+ endif ()
186
196
endif ()
187
197
endif ()
188
198
189
- find_program (CCACHE_FOUND ccache)
190
- if (CCACHE_FOUND)
191
- set_property (GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
192
- set_property (GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
193
- endif (CCACHE_FOUND)
194
-
195
199
if (JSONCPP_WITH_WARNING_AS_ERROR)
196
- UseCompilationWarningAsError ()
200
+ use_compilation_warning_as_error ()
197
201
endif ()
198
202
199
203
if (JSONCPP_WITH_PKGCONFIG_SUPPORT)
@@ -206,29 +210,29 @@ if(JSONCPP_WITH_PKGCONFIG_SUPPORT)
206
210
endif ()
207
211
208
212
if (JSONCPP_WITH_CMAKE_PACKAGE)
209
- include (CMakePackageConfigHelpers)
210
- install (EXPORT jsoncpp
211
- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/jsoncpp
212
- FILE jsoncppConfig.cmake)
213
- write_basic_package_version_file ("${CMAKE_CURRENT_BINARY_DIR} /jsoncppConfigVersion.cmake"
214
- VERSION ${PROJECT_VERSION}
215
- COMPATIBILITY SameMajorVersion)
216
- install (FILES ${CMAKE_CURRENT_BINARY_DIR} /jsoncppConfigVersion.cmake
217
- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/jsoncpp)
213
+ include (CMakePackageConfigHelpers)
214
+ install (EXPORT jsoncpp
215
+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/jsoncpp
216
+ FILE jsoncppConfig.cmake)
217
+ write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR} /jsoncppConfigVersion.cmake"
218
+ VERSION ${PROJECT_VERSION}
219
+ COMPATIBILITY SameMajorVersion)
220
+ install (FILES ${CMAKE_CURRENT_BINARY_DIR} /jsoncppConfigVersion.cmake
221
+ DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/jsoncpp)
218
222
endif ()
219
223
220
224
if (JSONCPP_WITH_TESTS)
221
- enable_testing ()
222
- include (CTest)
225
+ enable_testing ()
226
+ include (CTest)
223
227
endif ()
224
228
225
229
# Build the different applications
226
- add_subdirectory ( src )
230
+ add_subdirectory (src)
227
231
228
232
#install the includes
229
- add_subdirectory ( include )
233
+ add_subdirectory (include )
230
234
231
235
#install the example
232
236
if (JSONCPP_WITH_EXAMPLE)
233
- add_subdirectory ( example )
237
+ add_subdirectory (example)
234
238
endif ()
0 commit comments