@@ -7,6 +7,7 @@ ENABLE_TESTING()
7
7
OPTION (JSONCPP_WITH_TESTS "Compile and (for jsoncpp_check) run JsonCpp test executables" ON )
8
8
OPTION (JSONCPP_WITH_POST_BUILD_UNITTEST "Automatically run unit-tests as a post build step" ON )
9
9
OPTION (JSONCPP_WITH_WARNING_AS_ERROR "Force compilation to fail if a warning occurs" OFF )
10
+ OPTION (JSONCPP_WITH_STRICT_ISO "Issue all the warnings demanded by strict ISO C and ISO C++" ON )
10
11
OPTION (JSONCPP_WITH_PKGCONFIG_SUPPORT "Generate and install .pc files" ON )
11
12
OPTION (JSONCPP_WITH_CMAKE_PACKAGE "Generate and install cmake package files" OFF )
12
13
OPTION (BUILD_SHARED_LIBS "Build jsoncpp_lib as a shared library." OFF )
@@ -83,6 +84,11 @@ macro(UseCompilationWarningAsError)
83
84
# Only enabled in debug because some old versions of VS STL generate
84
85
# warnings when compiled in release configuration.
85
86
set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /WX " )
87
+ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
88
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror" )
89
+ if (JSONCPP_WITH_STRICT_ISO)
90
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic-errors" )
91
+ endif ()
86
92
endif ()
87
93
endmacro ()
88
94
@@ -100,8 +106,12 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
100
106
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wconversion -Wshadow -Wno-sign-conversion" )
101
107
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
102
108
# using GCC
103
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wconversion -Wshadow -Wextra -pedantic " )
109
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wconversion -Wshadow -Wextra" )
104
110
# not yet ready for -Wsign-conversion
111
+
112
+ if (JSONCPP_WITH_STRICT_ISO AND NOT JSONCPP_WITH_WARNING_AS_ERROR)
113
+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic" )
114
+ endif ()
105
115
endif ()
106
116
107
117
find_program (CCACHE_FOUND ccache)
0 commit comments