@@ -19,56 +19,60 @@ function(add_compile_options_safe FLAG)
1919 endif ()
2020endfunction ()
2121
22- if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
22+ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" )
2323 add_compile_options (-pedantic)
24+
2425 add_compile_options (-Wall)
2526 add_compile_options (-Wextra)
2627 add_compile_options (-Wcast-qual) # Cast for removing type qualifiers
2728 add_compile_options (-Wfloat-equal ) # Floating values used in equality comparisons
2829 add_compile_options (-Wmissing-declarations) # If a global function is defined without a previous declaration
2930 add_compile_options (-Wmissing-format-attribute) #
30- add_compile_options (-Wno-long-long)
3131 add_compile_options (-Wpacked) #
3232 add_compile_options (-Wredundant-decls) # if anything is declared more than once in the same scope
3333 add_compile_options (-Wundef)
34- add_compile_options (-Wno-missing-braces)
35- add_compile_options (-Wno-sign-compare)
36- add_compile_options (-Wno-multichar)
3734 add_compile_options (-Woverloaded-virtual) # when a function declaration hides virtual functions from a base class
3835
3936 add_compile_options (-Wsuggest-attribute=noreturn)
4037 add_compile_options_safe(-Wuseless-cast)
41- elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
38+
39+ # we are not interested in these
40+ set_source_files_properties (test .cpp PROPERTIES COMPILE_FLAGS -Wno-multichar)
41+ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" )
4242 add_compile_definitions (_CRT_SECURE_NO_WARNINGS)
43- # TODO: bump warning level
44- #add_compile_options(/W4) # Warning Level
45- # TODO: enable warning
43+
44+ add_compile_options (/W4) # Warning Level
45+
46+ add_compile_options (/wd4127) # warning C4127: conditional expression is constant
47+ add_compile_options (/wd4244) # warning C4244: 'x': conversion from 'int' to 'char', possible loss of data
4648 add_compile_options (/wd4267) # warning C4267: '...': conversion from 'size_t' to 'unsigned int', possible loss of data
49+ add_compile_options (/wd4706) # warning C4706: assignment within conditional expression
4750elseif (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
4851 add_compile_options (-Weverything)
52+
4953 # no need for c++98 compatibility
5054 add_compile_options (-Wno-c++98-compat-pedantic)
51- # these are not really fixable
55+
56+ # these are not really fixable until newer standards
5257 add_compile_options (-Wno-exit-time-destructors)
5358 add_compile_options (-Wno-global -constructors)
5459 add_compile_options (-Wno-weak-vtables)
5560 add_compile_options_safe(-Wno-unsafe-buffer-usage)
5661 add_compile_options_safe(-Wno-nrvo)
57- # we are not interested in these
58- add_compile_options (-Wno-multichar)
59- add_compile_options (-Wno-four-char-constants)
60- # ignore C++11-specific warning
61- add_compile_options (-Wno-suggest-override)
62- add_compile_options (-Wno-suggest-destructor-override)
62+
6363 # contradicts -Wcovered-switch-default
6464 add_compile_options (-Wno-switch-default)
65+
6566 # TODO: fix these?
6667 add_compile_options (-Wno-padded)
6768 add_compile_options (-Wno-sign-conversion)
6869 add_compile_options (-Wno-implicit-int-conversion)
6970 add_compile_options (-Wno-shorten-64-to-32)
7071 add_compile_options (-Wno-shadow-field-in-constructor)
7172
73+ # we are not interested in these
74+ set_source_files_properties (test .cpp PROPERTIES COMPILE_FLAGS "-Wno-multichar -Wno-four-char-constants" )
75+
7276 if (CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 14 OR CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 14)
7377 # TODO: verify this regression still exists in clang-15
7478 if (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" )
0 commit comments