Skip to content

Commit bd6a3d0

Browse files
committed
Use ccache right
fix indents too at CMakeLists.txt
1 parent 3a970e8 commit bd6a3d0

File tree

1 file changed

+59
-55
lines changed

1 file changed

+59
-55
lines changed

CMakeLists.txt

Lines changed: 59 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -62,19 +62,29 @@ if(NOT DEFINED CMAKE_BUILD_TYPE)
6262
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel Coverage.")
6363
endif()
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+
6575
project(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

7686
message(STATUS "JsonCpp Version: ${JSONCPP_VERSION_MAJOR}.${JSONCPP_VERSION_MINOR}.${JSONCPP_VERSION_PATCH}")
77-
set( JSONCPP_SOVERSION 22 )
87+
set(JSONCPP_SOVERSION 23)
7888

7989
option(JSONCPP_WITH_TESTS "Compile and (for jsoncpp_check) run JsonCpp test executables" ON)
8090
option(JSONCPP_WITH_POST_BUILD_UNITTEST "Automatically run unit-tests as a post build step" ON)
@@ -106,22 +116,22 @@ macro(use_compilation_warning_as_error)
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()
127137
endmacro()
@@ -133,65 +143,59 @@ if(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()
140150
endif()
141151

142152
if(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()
149159
elseif(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()
172182
elseif(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()
187197
endif()
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()
194-
195199
if(JSONCPP_WITH_WARNING_AS_ERROR)
196200
use_compilation_warning_as_error()
197201
endif()
@@ -206,15 +210,15 @@ if(JSONCPP_WITH_PKGCONFIG_SUPPORT)
206210
endif()
207211

208212
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)
218222
endif()
219223

220224
if(JSONCPP_WITH_TESTS)
@@ -223,12 +227,12 @@ if(JSONCPP_WITH_TESTS)
223227
endif()
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
232236
if(JSONCPP_WITH_EXAMPLE)
233-
add_subdirectory( example )
237+
add_subdirectory(example)
234238
endif()

0 commit comments

Comments
 (0)