ai-dev-template / cpp /CMakeLists.txt
Jordandevlog's picture
Upload cpp/CMakeLists.txt
3ad2e0d verified
Raw
History Blame Contribute Delete
1.24 kB
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)