| | |
| | |
| |
|
| | string( TOUPPER ${PROJECT_NAME} PROJECT_NAME_UPPERCASE ) |
| |
|
| | if ( NOT MSVC ) |
| | option( ${PROJECT_NAME_UPPERCASE}_WARN_EVERYTHING "Turn on all warnings (not recommended - used for lib development)" OFF ) |
| | endif() |
| |
|
| | option( ${PROJECT_NAME_UPPERCASE}_WARNING_AS_ERROR "Treat warnings as errors" OFF ) |
| |
|
| | |
| | set( compiler_is_clang "$<OR:$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:Clang>>" ) |
| | set( compiler_is_gnu "$<CXX_COMPILER_ID:GNU>" ) |
| | set( compiler_is_msvc "$<CXX_COMPILER_ID:MSVC>" ) |
| |
|
| | target_compile_options( ${PROJECT_NAME} |
| | PRIVATE |
| | |
| | $<${compiler_is_msvc}: |
| | /W4 |
| | /w14263 |
| | /w14296 |
| | /w14311 |
| | /w14545 |
| | /w14546 |
| | /w14547 |
| | /w14549 |
| | /w14619 |
| | /w14640 |
| | /w14905 |
| | /w14906 |
| |
|
| | /wd4251 |
| | > |
| | |
| | $<$<OR:${compiler_is_clang},${compiler_is_gnu}>: |
| | -Wall |
| | -Wcast-align |
| | -Wextra |
| | -Wformat=2 |
| | -Wnon-virtual-dtor |
| | -Wnull-dereference |
| | -Woverloaded-virtual |
| | -Wpedantic |
| | -Wshadow |
| | -Wunused |
| | > |
| | |
| | $<${compiler_is_clang}: |
| | -Wdocumentation |
| | -Wno-documentation-deprecated-sync |
| | > |
| | |
| | $<${compiler_is_gnu}: |
| | -Wduplicated-branches |
| | -Wduplicated-cond |
| | -Wlogical-op |
| | > |
| | ) |
| |
|
| | |
| | |
| | function( set_warn_everything ) |
| | message( STATUS "[${PROJECT_NAME}] Turning on (almost) all warnings") |
| |
|
| | target_compile_options( ${PROJECT_NAME} |
| | PRIVATE |
| | |
| | $<$<OR:${compiler_is_clang},${compiler_is_gnu}>: |
| | -Weverything |
| | -Wno-c++98-compat |
| | -Wno-c++98-compat-pedantic |
| | -Wno-padded |
| | > |
| | |
| | $<${compiler_is_clang}: |
| | -Wno-documentation-deprecated-sync |
| | > |
| | ) |
| | endfunction() |
| |
|
| | if ( NOT MSVC AND ${PROJECT_NAME_UPPERCASE}_WARN_EVERYTHING ) |
| | set_warn_everything() |
| | endif() |
| |
|
| | |
| | function( set_warning_as_error ) |
| | message( STATUS "[${PROJECT_NAME}] Treating warnings as errors") |
| |
|
| | if ( CMAKE_VERSION VERSION_GREATER_EQUAL "3.24" ) |
| | set_target_properties( ${PROJECT_NAME} |
| | PROPERTIES |
| | COMPILE_WARNING_AS_ERROR ON |
| | ) |
| | else() |
| | |
| | target_compile_options( ${PROJECT_NAME} |
| | PRIVATE |
| | $<${compiler_is_msvc}: |
| | /WX |
| | > |
| | $<$<OR:${compiler_is_clang},${compiler_is_gnu}>: |
| | -Werror |
| | > |
| | ) |
| | endif() |
| | endfunction() |
| |
|
| | if ( ${PROJECT_NAME_UPPERCASE}_WARNING_AS_ERROR ) |
| | set_warning_as_error() |
| | endif() |
| |
|