@@ -32,6 +32,8 @@ endif ()
32
32
option (SBE_TESTS "Enable tests" ${STANDALONE_BUILD} )
33
33
option (SBE_BUILD_SAMPLES "Enable building the sample projects" ${STANDALONE_BUILD} )
34
34
option (SBE_BUILD_BENCHMARKS "Enable building the benchmarks" ${STANDALONE_BUILD} )
35
+ option (C_WARNINGS_AS_ERRORS "Enable warnings as errors for C" OFF )
36
+ option (CXX_WARNINGS_AS_ERRORS "Enable warnings as errors for C++" OFF )
35
37
36
38
unset (STANDALONE_BUILD )
37
39
@@ -80,6 +82,12 @@ if (SBE_TESTS)
80
82
ExternalProject_Get_Property (gtest binary_dir )
81
83
set (GTEST_BINARY_DIR ${binary_dir} )
82
84
85
+ if (MSVC AND CMAKE_BUILD_TYPE STREQUAL "Debug" )
86
+ set (GTEST_POSTFIX "d" )
87
+ else ()
88
+ set (GTEST_POSTFIX "" )
89
+ endif ()
90
+
83
91
set (GTEST_LIBS
84
92
${GTEST_BINARY_DIR} /lib/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gmock${CMAKE_STATIC_LIBRARY_SUFFIX}
85
93
${GTEST_BINARY_DIR} /lib/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}
@@ -91,17 +99,42 @@ find_package(Threads)
91
99
92
100
if (UNIX )
93
101
add_compile_options (-Wall -Wpedantic -Wextra -Wno-unused-parameter )
102
+
103
+ if (C_WARNINGS_AS_ERRORS )
104
+ add_compile_options ($< $< COMPILE_LANGUAGE:C> :-Werror> )
105
+ endif (C_WARNINGS_AS_ERRORS )
106
+
107
+ if (CXX_WARNINGS_AS_ERRORS )
108
+ add_compile_options ($< $< COMPILE_LANGUAGE:CXX> :-Werror> )
109
+ endif (CXX_WARNINGS_AS_ERRORS )
94
110
endif ()
95
111
96
112
if (APPLE )
97
113
# -Wall doesn't enable everything we want to see
98
114
add_compile_options (-Wsign-compare )
99
115
add_definitions (-DDarwin )
116
+ add_compile_options (-Wno-deprecated-register )
100
117
elseif (MSVC )
101
118
add_definitions (-DWIN32 )
119
+ add_definitions (-D_CRT_SECURE_NO_WARNINGS )
120
+ add_definitions (-D_CRT_NONSTDC_NO_WARNINGS )
121
+ add_definitions (-DNOMINMAX )
122
+
123
+ if (${MSVC_VERSION} GREATER_EQUAL 1915 )
124
+ # Acknowledge that we understand MSVC resolved a byte alignment issue in this compiler
125
+ add_definitions (-D_ENABLE_EXTENDED_ALIGNED_STORAGE )
126
+ endif ()
127
+
128
+ set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd /Od /Zi /MP" )
129
+ set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT /MP" )
130
+
131
+ if (C_WARNINGS_AS_ERRORS )
132
+ add_compile_options ($< $< COMPILE_LANGUAGE:C> :/WX> )
133
+ endif (C_WARNINGS_AS_ERRORS )
102
134
103
- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd /Od /Zi" )
104
- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT" )
135
+ if (CXX_WARNINGS_AS_ERRORS )
136
+ add_compile_options ($< $< COMPILE_LANGUAGE:CXX> :/WX> )
137
+ endif (CXX_WARNINGS_AS_ERRORS )
105
138
else ()
106
139
add_definitions (-D_GNU_SOURCE )
107
140
endif ()
@@ -111,6 +144,7 @@ set(LIBSUFFIX "${CMAKE_STATIC_LIBRARY_SUFFIX}")
111
144
112
145
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /binaries" )
113
146
set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /lib" )
147
+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /lib" )
114
148
115
149
set (SBE_JAR "${CMAKE_CURRENT_SOURCE_DIR} /sbe-all/build/libs/sbe-all-${SBE_VERSION_TXT} .jar" )
116
150
0 commit comments