@@ -32,6 +32,8 @@ endif ()
3232option (SBE_TESTS "Enable tests" ${STANDALONE_BUILD} )
3333option (SBE_BUILD_SAMPLES "Enable building the sample projects" ${STANDALONE_BUILD} )
3434option (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 )
3537
3638unset (STANDALONE_BUILD)
3739
@@ -80,6 +82,12 @@ if (SBE_TESTS)
8082 ExternalProject_Get_Property(gtest binary_dir)
8183 set (GTEST_BINARY_DIR ${binary_dir} )
8284
85+ if (MSVC AND CMAKE_BUILD_TYPE STREQUAL "Debug" )
86+ set (GTEST_POSTFIX "d" )
87+ else ()
88+ set (GTEST_POSTFIX "" )
89+ endif ()
90+
8391 set (GTEST_LIBS
8492 ${GTEST_BINARY_DIR} /lib/${CMAKE_CFG_INTDIR} /${CMAKE_STATIC_LIBRARY_PREFIX} gmock${CMAKE_STATIC_LIBRARY_SUFFIX}
8593 ${GTEST_BINARY_DIR} /lib/${CMAKE_CFG_INTDIR} /${CMAKE_STATIC_LIBRARY_PREFIX} gtest${CMAKE_STATIC_LIBRARY_SUFFIX}
@@ -91,17 +99,42 @@ find_package(Threads)
9199
92100if (UNIX )
93101 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)
94110endif ()
95111
96112if (APPLE )
97113 # -Wall doesn't enable everything we want to see
98114 add_compile_options (-Wsign-compare)
99115 add_definitions (-DDarwin)
116+ add_compile_options (-Wno-deprecated-register)
100117elseif (MSVC )
101118 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)
102134
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)
105138else ()
106139 add_definitions (-D_GNU_SOURCE)
107140endif ()
@@ -111,6 +144,7 @@ set(LIBSUFFIX "${CMAKE_STATIC_LIBRARY_SUFFIX}")
111144
112145set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /binaries" )
113146set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /lib" )
147+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /lib" )
114148
115149set (SBE_JAR "${CMAKE_CURRENT_SOURCE_DIR} /sbe-all/build/libs/sbe-all-${SBE_VERSION_TXT} .jar" )
116150
0 commit comments