Qt_Custom_Style_Example/_cmake/target_options.cmake

62 lines
2.6 KiB
CMake
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Файл для подключения в основной проект через 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()