@@ -38,7 +38,7 @@ foreach(pold "") # Currently Empty
3838endforeach ()
3939
4040# ==== Define language standard configurations requiring at least c++11 standard
41- if (CMAKE_CXX_STANDARD EQUAL "98" )
41+ if (CMAKE_CXX_STANDARD EQUAL "98" )
4242 message (FATAL_ERROR "CMAKE_CXX_STANDARD:STRING=98 is not supported." )
4343endif ()
4444
@@ -62,19 +62,29 @@ if(NOT DEFINED CMAKE_BUILD_TYPE)
6262 "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel Coverage." )
6363endif ()
6464
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+
6575project (JSONCPP
6676 # Note: version must be updated in three places when doing a release. This
6777 # annoying process ensures that amalgamate, CMake, and meson all report the
6878 # 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 !!
7383 VERSION 1.9.3 # <major>[.<minor>[.<patch>[.<tweak>]]]
7484 LANGUAGES CXX)
7585
7686message (STATUS "JsonCpp Version: ${JSONCPP_VERSION_MAJOR} .${JSONCPP_VERSION_MINOR} .${JSONCPP_VERSION_PATCH} " )
77- set ( JSONCPP_SOVERSION 22 )
87+ set (JSONCPP_SOVERSION 23 )
7888
7989option (JSONCPP_WITH_TESTS "Compile and (for jsoncpp_check) run JsonCpp test executables" ON )
8090option (JSONCPP_WITH_POST_BUILD_UNITTEST "Automatically run unit-tests as a post build step" ON )
@@ -95,105 +105,99 @@ include(GNUInstallDirs)
95105
96106set (DEBUG_LIBNAME_SUFFIX "" CACHE STRING "Optional suffix to append to the library name for a debug build" )
97107
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" )
99109
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 )
103113
104- macro (UseCompilationWarningAsError )
114+ macro (use_compilation_warning_as_error )
105115 if (MSVC )
106116 # Only enabled in debug because some old versions of VS STL generate
107117 # warnings when compiled in release configuration.
108118 if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
109- add_compile_options ($<$<CONFIG:Debug>:/WX>)
119+ add_compile_options ($<$<CONFIG:Debug>:/WX>)
110120 else ()
111- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /WX " )
121+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /WX " )
112122 endif ()
113123 elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
114124 if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
115- add_compile_options (-Werror)
125+ add_compile_options (-Werror)
116126 else ()
117- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror" )
127+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror" )
118128 endif ()
119129 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 ()
125135 endif ()
126136 endif ()
127137endmacro ()
128138
129139# Include our configuration header
130- include_directories ( ${jsoncpp_SOURCE_DIR} /include )
140+ include_directories (${jsoncpp_SOURCE_DIR} /include )
131141
132142if (MSVC )
133143 # Only enabled in debug because some old versions of VS STL generate
134144 # unreachable code warning when compiled in release configuration.
135145 if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
136- add_compile_options ($<$<CONFIG:Debug>:/W4>)
146+ add_compile_options ($<$<CONFIG:Debug>:/W4>)
137147 else ()
138- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 " )
148+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /W4 " )
139149 endif ()
140150endif ()
141151
142152if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
143153 # using regular Clang or AppleClang
144154 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)
146156 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" )
148158 endif ()
149159elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
150160 # using GCC
151161 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)
153163 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" )
155165 endif ()
156166 # not yet ready for -Wsign-conversion
157167
158168 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 ()
164174 endif ()
165175 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 ()
171181 endif ()
172182elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel" )
173183 # using Intel compiler
174184 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)
176186 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" )
178188 endif ()
179189
180190 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 ()
186196 endif ()
187197endif ()
188198
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-
195199if (JSONCPP_WITH_WARNING_AS_ERROR)
196- UseCompilationWarningAsError ()
200+ use_compilation_warning_as_error ()
197201endif ()
198202
199203if (JSONCPP_WITH_PKGCONFIG_SUPPORT)
@@ -206,29 +210,29 @@ if(JSONCPP_WITH_PKGCONFIG_SUPPORT)
206210endif ()
207211
208212if (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)
218222endif ()
219223
220224if (JSONCPP_WITH_TESTS)
221- enable_testing ()
222- include (CTest)
225+ enable_testing ()
226+ include (CTest)
223227endif ()
224228
225229# Build the different applications
226- add_subdirectory ( src )
230+ add_subdirectory (src)
227231
228232#install the includes
229- add_subdirectory ( include )
233+ add_subdirectory (include )
230234
231235#install the example
232236if (JSONCPP_WITH_EXAMPLE)
233- add_subdirectory ( example )
237+ add_subdirectory (example)
234238endif ()
0 commit comments