Skip to content

Commit a6fe8e2

Browse files
authored
Use ccache right (open-source-parsers#1139)
* Prevent cmakelint warnings Use 4 spaces for indent, no tabs * Use ccache right fix indents too at CMakeLists.txt
1 parent edf528e commit a6fe8e2

File tree

5 files changed

+166
-155
lines changed

5 files changed

+166
-155
lines changed

CMakeLists.txt

Lines changed: 69 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ foreach(pold "") # Currently Empty
3838
endforeach()
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.")
4343
endif()
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.")
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)
@@ -95,105 +105,99 @@ include(GNUInstallDirs)
95105

96106
set(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()
127137
endmacro()
128138

129139
# Include our configuration header
130-
include_directories( ${jsoncpp_SOURCE_DIR}/include )
140+
include_directories(${jsoncpp_SOURCE_DIR}/include)
131141

132142
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(CCACHE_FOUND)
194-
195199
if(JSONCPP_WITH_WARNING_AS_ERROR)
196-
UseCompilationWarningAsError()
200+
use_compilation_warning_as_error()
197201
endif()
198202

199203
if(JSONCPP_WITH_PKGCONFIG_SUPPORT)
@@ -206,29 +210,29 @@ 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)
221-
enable_testing()
222-
include(CTest)
225+
enable_testing()
226+
include(CTest)
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()

example/CMakeLists.txt

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,29 @@
22
cmake_minimum_required(VERSION 3.1)
33

44
set(EXAMPLES
5-
readFromString
6-
readFromStream
7-
stringWrite
8-
streamWrite
9-
)
5+
readFromString
6+
readFromStream
7+
stringWrite
8+
streamWrite
9+
)
1010
add_definitions(-D_GLIBCXX_USE_CXX11_ABI)
1111
set_property(DIRECTORY PROPERTY COMPILE_OPTIONS ${EXTRA_CXX_FLAGS})
1212

1313
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
14-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra ")
15-
else()
16-
add_definitions(
17-
-D_SCL_SECURE_NO_WARNINGS
18-
-D_CRT_SECURE_NO_WARNINGS
19-
-D_WIN32_WINNT=0x601
20-
-D_WINSOCK_DEPRECATED_NO_WARNINGS)
14+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra ")
15+
else()
16+
add_definitions(
17+
-D_SCL_SECURE_NO_WARNINGS
18+
-D_CRT_SECURE_NO_WARNINGS
19+
-D_WIN32_WINNT=0x601
20+
-D_WINSOCK_DEPRECATED_NO_WARNINGS
21+
)
2122
endif()
2223

23-
foreach (example ${EXAMPLES})
24-
add_executable(${example} ${example}/${example}.cpp)
25-
target_include_directories(${example} PUBLIC ${CMAKE_SOURCE_DIR}/include)
26-
target_link_libraries(${example} jsoncpp_lib)
24+
foreach(example ${EXAMPLES})
25+
add_executable(${example} ${example}/${example}.cpp)
26+
target_include_directories(${example} PUBLIC ${CMAKE_SOURCE_DIR}/include)
27+
target_link_libraries(${example} jsoncpp_lib)
2728
endforeach()
2829

2930
add_custom_target(examples ALL DEPENDS ${EXAMPLES})

src/jsontestrunner/CMakeLists.txt

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
2-
# The new Python3 module is much more robust than the previous PythonInterp
3-
find_package (Python3 COMPONENTS Interpreter)
4-
# Set variables for backwards compatibility with cmake < 3.12.0
5-
set(PYTHONINTERP_FOUND ${Python3_Interpreter_FOUND})
6-
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
2+
# The new Python3 module is much more robust than the previous PythonInterp
3+
find_package(Python3 COMPONENTS Interpreter)
4+
# Set variables for backwards compatibility with cmake < 3.12.0
5+
set(PYTHONINTERP_FOUND ${Python3_Interpreter_FOUND})
6+
set(PYTHON_EXECUTABLE ${Python3_EXECUTABLE})
77
else()
8-
set(Python_ADDITIONAL_VERSIONS 3.8)
9-
find_package(PythonInterp 3)
8+
set(Python_ADDITIONAL_VERSIONS 3.8)
9+
find_package(PythonInterp 3)
1010
endif()
1111

1212
add_executable(jsontestrunner_exe
13-
main.cpp
14-
)
13+
main.cpp
14+
)
1515

1616
if(BUILD_SHARED_LIBS)
17-
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
18-
add_compile_definitions( JSON_DLL )
19-
else()
20-
add_definitions( -DJSON_DLL )
21-
endif()
17+
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.12.0)
18+
add_compile_definitions( JSON_DLL )
19+
else()
20+
add_definitions(-DJSON_DLL)
21+
endif()
2222
endif()
2323
target_link_libraries(jsontestrunner_exe jsoncpp_lib)
2424

@@ -32,18 +32,18 @@ if(PYTHONINTERP_FOUND)
3232
# Run unit tests in post-build
3333
# (default cmake workflow hides away the test result into a file, resulting in poor dev workflow?!?)
3434
add_custom_target(jsoncpp_readerwriter_tests
35-
"${PYTHON_EXECUTABLE}" -B "${RUNJSONTESTS_PATH}" $<TARGET_FILE:jsontestrunner_exe> "${TEST_DIR}/data"
36-
DEPENDS jsontestrunner_exe jsoncpp_test
37-
)
35+
"${PYTHON_EXECUTABLE}" -B "${RUNJSONTESTS_PATH}" $<TARGET_FILE:jsontestrunner_exe> "${TEST_DIR}/data"
36+
DEPENDS jsontestrunner_exe jsoncpp_test
37+
)
3838
add_custom_target(jsoncpp_check DEPENDS jsoncpp_readerwriter_tests)
3939

4040
## Create tests for dashboard submission, allows easy review of CI results https://my.cdash.org/index.php?project=jsoncpp
4141
add_test(NAME jsoncpp_readerwriter
42-
COMMAND "${PYTHON_EXECUTABLE}" -B "${RUNJSONTESTS_PATH}" $<TARGET_FILE:jsontestrunner_exe> "${TEST_DIR}/data"
43-
WORKING_DIRECTORY "${TEST_DIR}/data"
42+
COMMAND "${PYTHON_EXECUTABLE}" -B "${RUNJSONTESTS_PATH}" $<TARGET_FILE:jsontestrunner_exe> "${TEST_DIR}/data"
43+
WORKING_DIRECTORY "${TEST_DIR}/data"
4444
)
4545
add_test(NAME jsoncpp_readerwriter_json_checker
46-
COMMAND "${PYTHON_EXECUTABLE}" -B "${RUNJSONTESTS_PATH}" --with-json-checker $<TARGET_FILE:jsontestrunner_exe> "${TEST_DIR}/data"
47-
WORKING_DIRECTORY "${TEST_DIR}/data"
46+
COMMAND "${PYTHON_EXECUTABLE}" -B "${RUNJSONTESTS_PATH}" --with-json-checker $<TARGET_FILE:jsontestrunner_exe> "${TEST_DIR}/data"
47+
WORKING_DIRECTORY "${TEST_DIR}/data"
4848
)
4949
endif()

0 commit comments

Comments
 (0)