cmake_minimum_required(VERSION 3.15) project(cait) string(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UPPER) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) option(${PROJECT_NAME_UPPER}_BUILD_BINARY "Build ${PROJECT_NAME} binary" ON) if(MSVC) add_compile_options(/Wall) add_compile_definitions(_CRT_SECURE_NO_WARNINGS) else() add_compile_options(-Weverything -Wno-c++98-compat) endif(MSVC) file(GLOB LIB${PROJECT_NAME_UPPER}_SOURCES ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}/*.cc) list(REMOVE_ITEM LIB${PROJECT_NAME_UPPER}_SOURCES ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}/${PROJECT_NAME}.cc) add_library(lib${PROJECT_NAME} OBJECT ${LIB${PROJECT_NAME_UPPER}_SOURCES}) if(${PROJECT_NAME_UPPER}_BUILD_BINARY) add_executable(${PROJECT_NAME} ${PROJECT_NAME}/${PROJECT_NAME}.cc) target_link_libraries(${PROJECT_NAME} PRIVATE lib${PROJECT_NAME}) install(TARGETS ${PROJECT_NAME}) endif(${PROJECT_NAME_UPPER}_BUILD_BINARY)