62 lines
2.6 KiB
CMake
62 lines
2.6 KiB
CMake
|
||
# Файл для подключения в основной проект через include
|
||
|
||
# Настройки компиляции для всего
|
||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||
-Wall
|
||
-Wextra
|
||
-Wpedantic
|
||
)
|
||
|
||
|
||
if (DISABLE_HARD_WARNING_ERROR)
|
||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||
-Wall
|
||
-Wextra
|
||
-Wpedantic
|
||
)
|
||
else()
|
||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||
-Wall # Все стандартные предупреждения
|
||
-Wextra # Дополнительные предупреждения
|
||
-Wpedantic # Соответствие стандарту C++
|
||
-Werror # Превратить предупреждения в ошибки
|
||
-Wconversion # Предупреждения о неявных преобразованиях
|
||
-Wsign-conversion # Предупреждения о знаковых/беззнаковых преобразованиях
|
||
-Wshadow # Предупреждения о "тенях" переменных
|
||
-Wunused # Предупреждения о неиспользуемом коде
|
||
-Wold-style-cast # Запрет C-style кастов (только static_cast/dynamic_cast/...)
|
||
-Wnull-dereference # Предупреждения о возможных разыменованиях nullptr
|
||
-Wdouble-promotion # Предупреждения о неявном преобразовании float → double
|
||
-Wformat=2 # Строгая проверка printf/scanf
|
||
)
|
||
endif()
|
||
|
||
target_compile_definitions(${PROJECT_NAME} PRIVATE
|
||
QT_NO_FOREACH
|
||
QT_NO_URL_CAST_FROM_STRING
|
||
QT_NO_NARROWING_CONVERSIONS_IN_CONNECT
|
||
QT_STRICT_ITERATORS
|
||
)
|
||
|
||
find_program(CLANG_TIDY_EXE NAMES "clang-tidy")
|
||
|
||
if (CLANG_TIDY_EXE)
|
||
set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_EXE};-checks=*")
|
||
endif()
|
||
|
||
if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
||
target_compile_options(${PROJECT_NAME} PRIVATE
|
||
-fsanitize=address # AddressSanitizer (поиск утечек, выходов за границы)
|
||
-fsanitize=undefined # UndefinedBehaviorSanitizer (UB-проверки)
|
||
-fsanitize=leak # LeakSanitizer (поиск утечек памяти)
|
||
-fno-omit-frame-pointer # Для лучшего стека вызовов в санитайзерах
|
||
)
|
||
target_link_options(${PROJECT_NAME} PRIVATE
|
||
-fsanitize=address
|
||
-fsanitize=undefined
|
||
-fsanitize=leak
|
||
)
|
||
endif()
|
||
|