@@ -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