Skip to content

Commit

Permalink
Update CMakeLists.txt
Browse files Browse the repository at this point in the history
  • Loading branch information
1vanK committed Nov 14, 2024
1 parent 381f80e commit 11b117c
Showing 1 changed file with 27 additions and 14 deletions.
41 changes: 27 additions & 14 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ cmake_minimum_required(VERSION 3.16)
# Название проекта
project(dv_big_int)

option(BIG_INT_ONLY_LIB "Не компилировать Тестер" OFF)
option(DV_BIG_INT_BUILD_TESTER "Компилировать Тестер" OFF)
option(DV_BIG_INT_UB_SANITIZER "Детектировать undefined behavior" OFF)

# Версия стандарта C++
set(CMAKE_CXX_STANDARD 20)
Expand All @@ -25,18 +26,6 @@ if(MSVC)
add_compile_options(/utf-8)
endif()

# Выводим больше предупреждений
if(MSVC)
add_compile_options(/W4)
else()
add_compile_options(-Wall -Wextra -Wpedantic)

if(NOT MINGW)
add_compile_options(-fsanitize=undefined)
add_link_options(-fsanitize=undefined)
endif()
endif()

# Статически линкуем библиотеки, чтобы не копировать dll-ки
if(MINGW)
add_link_options(-static)
Expand All @@ -59,12 +48,25 @@ add_library(${target_name} STATIC ${source_files})
# Делаем заголовочные файлы доступными библиотеке и приложениям
target_include_directories(${target_name} PUBLIC lib)

# Выводим больше предупреждений
if(MSVC)
target_compile_options(${target_name} PRIVATE /W4)
else() # GCC, Clang или MinGW
target_compile_options(${target_name} PRIVATE -Wall -Wextra -Wpedantic)

if(NOT MINGW AND DV_BIG_INT_UB_SANITIZER)
target_compile_options(${target_name} PRIVATE -fsanitize=undefined)
# PUBLIC, чтобы не было ошибок при линковке к приложению без опции
target_link_options(${target_name} PUBLIC -fsanitize=undefined)
endif()
endif()

# Заставляем VS отображать дерево каталогов
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${source_files})

# ============================================== Тестер ==============================================

if(NOT BIG_INT_ONLY_LIB)
if(DV_BIG_INT_BUILD_TESTER)
# Название таргета
set(target_name tester)

Expand All @@ -77,6 +79,17 @@ if(NOT BIG_INT_ONLY_LIB)
# Подключаем библиотеку
target_link_libraries(${target_name} PRIVATE dv_big_int)

# Выводим больше предупреждений
if(MSVC)
target_compile_options(${target_name} PRIVATE /W4)
else() # GCC, Clang или MinGW
target_compile_options(${target_name} PRIVATE -Wall -Wextra -Wpedantic)

if(NOT MINGW AND DV_BIG_INT_UB_SANITIZER)
target_compile_options(${target_name} PRIVATE -fsanitize=undefined)
endif()
endif()

# Отладочная версия приложения будет иметь суффикс _d
set_property(TARGET ${target_name} PROPERTY DEBUG_POSTFIX _d)

Expand Down

0 comments on commit 11b117c

Please sign in to comment.