mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
chore(build): Enable lots of compile-time warnings
Taken directly from 9777aa619d/warnings
* Remove Wuseless-cast, because Qt's MOC-generated code hits it.
* Remove Wduplicated-branches, Wduplicated-branches, Wformat-truncation
because they aren't supported on our oldest CI job.
This commit is contained in:
parent
ece26e4a4f
commit
aa2e253674
|
@ -646,6 +646,7 @@ link_libraries(coverage_config)
|
||||||
add_subdirectory(util)
|
add_subdirectory(util)
|
||||||
add_subdirectory(audio)
|
add_subdirectory(audio)
|
||||||
add_subdirectory(translations)
|
add_subdirectory(translations)
|
||||||
|
add_subdirectory(cmake/warnings)
|
||||||
|
|
||||||
add_library(${PROJECT_NAME}_static
|
add_library(${PROJECT_NAME}_static
|
||||||
STATIC
|
STATIC
|
||||||
|
@ -659,6 +660,7 @@ target_link_libraries(${PROJECT_NAME}_static
|
||||||
target_link_libraries(${PROJECT_NAME}_static util_library)
|
target_link_libraries(${PROJECT_NAME}_static util_library)
|
||||||
target_link_libraries(${PROJECT_NAME}_static audio_library)
|
target_link_libraries(${PROJECT_NAME}_static audio_library)
|
||||||
target_link_libraries(${PROJECT_NAME}_static translations_library)
|
target_link_libraries(${PROJECT_NAME}_static translations_library)
|
||||||
|
target_link_libraries(${PROJECT_NAME}_static qtox::warnings)
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME}
|
add_executable(${PROJECT_NAME}
|
||||||
WIN32
|
WIN32
|
||||||
|
|
75
cmake/warnings/CMakeLists.txt
Normal file
75
cmake/warnings/CMakeLists.txt
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
project(qtox_warnings)
|
||||||
|
|
||||||
|
add_library(${PROJECT_NAME} INTERFACE)
|
||||||
|
add_library(qtox::warnings ALIAS ${PROJECT_NAME})
|
||||||
|
|
||||||
|
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
|
||||||
|
if("${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "MSVC")
|
||||||
|
set(CLANGCL ON)
|
||||||
|
else()
|
||||||
|
set(CLANG ON)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_compile_options(${PROJECT_NAME} INTERFACE
|
||||||
|
$<$<OR:$<BOOL:${CLANG}>,$<CXX_COMPILER_ID:GNU>>:
|
||||||
|
-fno-common;
|
||||||
|
-fstrict-overflow;
|
||||||
|
-ftrapv;
|
||||||
|
-pedantic-errors;
|
||||||
|
-Wall;
|
||||||
|
-Wcast-align;
|
||||||
|
-Wdouble-promotion;
|
||||||
|
-Werror;
|
||||||
|
-Wextra;
|
||||||
|
-Wformat=2;
|
||||||
|
-Wmissing-declarations;
|
||||||
|
-Wnon-virtual-dtor;
|
||||||
|
-Wnull-dereference;
|
||||||
|
-Wold-style-cast;
|
||||||
|
-Woverloaded-virtual;
|
||||||
|
-Wshadow;
|
||||||
|
-Wsign-compare;
|
||||||
|
-Wundef;
|
||||||
|
>
|
||||||
|
$<$<CXX_COMPILER_ID:GNU>:
|
||||||
|
-Wduplicated-cond;
|
||||||
|
-Wlogical-op;
|
||||||
|
>
|
||||||
|
$<$<BOOL:${CLANG}>:
|
||||||
|
-Wmissing-variable-declarations;
|
||||||
|
-Wno-gnu-zero-variadic-macro-arguments; # Required for gtest 1.10.
|
||||||
|
>
|
||||||
|
$<$<OR:$<BOOL:${CLANGCL}>,$<CXX_COMPILER_ID:MSVC>>:
|
||||||
|
/permissive-;
|
||||||
|
/W4;
|
||||||
|
/w14254; # 'operator': conversion from 'type1:field_bits' to
|
||||||
|
# 'type2:field_bits', possible loss of data
|
||||||
|
/w14263; # 'function': member function does not override any base class
|
||||||
|
# virtual member function
|
||||||
|
/w14265; # 'classname': class has virtual functions, but destructor is not
|
||||||
|
# virtual instances of this class may not be destructed correctly
|
||||||
|
/w14287; # 'operator': unsigned/negative constant mismatch
|
||||||
|
/w14289; # nonstandard extension used: 'variable': loop control variable
|
||||||
|
# declared in the for-loop is used outside the for-loop scope
|
||||||
|
/w14296; # 'operator': expression is always 'boolean_value'
|
||||||
|
/w14311; # 'variable': pointer truncation from 'type1' to 'type2'
|
||||||
|
/w14545; # expression before comma evaluates to a function which is missing
|
||||||
|
# an argument list
|
||||||
|
/w14546; # function call before comma missing argument list
|
||||||
|
/w14547; # 'operator': operator before comma has no effect; expected
|
||||||
|
# operator with side-effect
|
||||||
|
/w14549; # 'operator': operator before comma has no effect; did you intend
|
||||||
|
# 'operator'?
|
||||||
|
/w14555; # expression has no effect; expected expression with side- effect
|
||||||
|
/w14619; # pragma warning: there is no warning number 'number'
|
||||||
|
/w14640; # Enable warning on thread un-safe static member initialization
|
||||||
|
/w14826; # Conversion from 'type1' to 'type_2' is sign-extended. This may
|
||||||
|
# cause unexpected runtime behavior.
|
||||||
|
/w14928; # illegal copy-initialization; more than one user-defined
|
||||||
|
# conversion has been implicitly applied
|
||||||
|
/wd4244; # 'argument': conversion from 'int' to 'unsigned char', possible
|
||||||
|
# loss of data # This one is sort of required for gtest.
|
||||||
|
/WX;
|
||||||
|
>
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user