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)