File size: 1,243 Bytes
3ad2e0d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | cmake_minimum_required(VERSION 3.20)
project(ai_dev_project VERSION 0.1.0 LANGUAGES CXX)
# C++23 standard
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Build type default
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
# Compiler warnings
if(MSVC)
add_compile_options(/W4 /WX-)
else()
add_compile_options(-Wall -Wextra -Wpedantic -Wshadow -Wconversion -Wsign-conversion)
endif()
# Dependencies
find_package(Threads REQUIRED)
# Options
option(BUILD_TESTS "Build tests" ON)
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
# Include directories
include_directories(${CMAKE_SOURCE_DIR}/include)
# Source files
file(GLOB_RECURSE SOURCES "src/*.cpp")
# Library
add_library(${PROJECT_NAME} ${SOURCES})
target_link_libraries(${PROJECT_NAME} Threads::Threads)
# Executable
add_executable(${PROJECT_NAME}_app src/main.cpp)
target_link_libraries(${PROJECT_NAME}_app ${PROJECT_NAME})
# Tests
if(BUILD_TESTS)
enable_testing()
add_subdirectory(tests)
endif()
# Install
install(TARGETS ${PROJECT_NAME} ${PROJECT_NAME}_app
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
)
install(DIRECTORY include/ DESTINATION include)
|