nf7/CMakeLists.txt

64 lines
1.4 KiB
CMake

cmake_minimum_required(VERSION 3.27)
project(nf7 C)
set(CMAKE_C_STANDARD 23)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if (NOT PROJECT_BINARY_DIR MATCHES "^${PROJECT_SOURCE_DIR}")
message(FATAL_ERROR "build dir must be inside of source dir")
endif()
string(LENGTH "${PROJECT_SOURCE_DIR}" PROJECT_DIR_LEN)
include(tool/meta.cmake)
# ---- thirdparty import
add_subdirectory(thirdparty EXCLUDE_FROM_ALL)
# ---- common config
add_library(nf7config INTERFACE)
target_include_directories(nf7config
INTERFACE
${PROJECT_SOURCE_DIR}
${NF7_GENERATED_DIR}
)
target_compile_definitions(nf7config
INTERFACE
NF7_PROJECT_DIR_LEN=${PROJECT_DIR_LEN}
)
target_compile_options(nf7config INTERFACE
$<$<CXX_COMPILER_ID:MSVC>:
/W4
$<$<CONFIG:Debug>:/WX>
>
$<$<NOT:$<CXX_COMPILER_ID:MSVC>>:
-Wall -Wextra -Wpedantic
-Wno-gnu-zero-variadic-macro-arguments
$<$<CONFIG:Debug>:-Werror>
>
)
# ---- test library
add_subdirectory(test EXCLUDE_FROM_ALL)
# ---- util library
add_subdirectory(util)
# ---- interface library
add_library(nf7if INTERFACE)
target_sources(nf7if INTERFACE nf7.h)
target_link_libraries(nf7if INTERFACE nf7config nf7util uv)
# ---- core library
add_subdirectory(core)
# ---- main executable
add_executable(nf7)
target_sources(nf7 PRIVATE main.c)
target_link_libraries(nf7
PRIVATE
nf7if
nf7core
)