41 lines
1.5 KiB
CMake
41 lines
1.5 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(dofs LANGUAGES CXX)
|
|
|
|
# Global C++ settings
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE BOOL "Export compile_commands.json")
|
|
|
|
# Dev toggle: convenient but less deterministic than listing files explicitly
|
|
option(DOFS_GLOB_SOURCES "Dev: auto-add *.cc files via GLOB (not ideal for CI)" OFF)
|
|
|
|
# Interface target to export common config (include dirs, features)
|
|
add_library(dofs_config INTERFACE)
|
|
target_compile_features(dofs_config INTERFACE cxx_std_20)
|
|
|
|
target_compile_options(dofs_config INTERFACE -Wall -Wextra -Wpedantic)
|
|
|
|
# Let everyone include headers like: #include "core/error.h"
|
|
target_include_directories(dofs_config INTERFACE "${PROJECT_SOURCE_DIR}/src")
|
|
|
|
# yaml-cpp submodule (static)
|
|
if(EXISTS "${PROJECT_SOURCE_DIR}/third_party/yaml-cpp/CMakeLists.txt")
|
|
# Use yaml-cpp's options; force them at configure-time
|
|
set(YAML_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
|
|
set(YAML_CPP_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
|
set(YAML_CPP_BUILD_TOOLS OFF CACHE BOOL "" FORCE)
|
|
set(YAML_CPP_BUILD_CONTRIB ON CACHE BOOL "" FORCE)
|
|
set(YAML_ENABLE_PIC ON CACHE BOOL "" FORCE)
|
|
set(YAML_CPP_INSTALL OFF CACHE BOOL "" FORCE)
|
|
|
|
add_subdirectory(third_party/yaml-cpp EXCLUDE_FROM_ALL)
|
|
else()
|
|
message(WARNING "yaml-cpp submodule missing at third_party/yaml-cpp")
|
|
endif()
|
|
|
|
# add_subdirectory(src)
|
|
add_subdirectory(src/core)
|
|
add_subdirectory(src/network)
|
|
add_subdirectory(src/hosts)
|