cmake_minimum_required(VERSION 3.9) project(SomeBot LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_compile_definitions(COMPILER_ID="${CMAKE_CXX_COMPILER_ID}") add_compile_definitions(COMPILER_VERSION="${CMAKE_CXX_COMPILER_VERSION}") add_compile_definitions(COMPILER_PLATFORM="${CMAKE_CXX_PLATFORM_ID}") add_subdirectory(DPP) file(GLOB MODULES modules/*.cpp modules/*.hpp) add_executable(SomeBot main.cpp util.cpp bot.hpp ${MODULES}) target_link_libraries(SomeBot PRIVATE dpp sqlite3 pthread) if (CMAKE_BUILD_TYPE STREQUAL "Release") set_property(TARGET SomeBot PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) message(STATUS "Interprocedural optimization is enabled") endif() target_compile_options(SomeBot PRIVATE -Wall -Wextra -Wpedantic ) if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(UBSAN_FLAGS "-fsanitize=undefined") if (CMAKE_BUILD_TYPE STREQUAL "Release") set(UBSAN_FLAGS ${UBSAN_FLAGS} "-fsanitize-minimal-runtime") endif() target_compile_options(SomeBot PUBLIC ${UBSAN_FLAGS}) target_link_options(SomeBot PUBLIC ${UBSAN_FLAGS}) message(STATUS "Undefined sanitizer runtime is enabled") endif() install(TARGETS SomeBot LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})