Files
tizi/CMakeLists.txt
T
2026-07-21 10:39:05 +08:00

54 lines
1.7 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(tizi LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# 第三方库引入
set(third_party "${CMAKE_CURRENT_LIST_DIR}/third_party")
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_FOLDER "yaml-cpp-master")
add_subdirectory("${third_party}/yaml-cpp-master")
set(CMAKE_FOLDER "lexbor-3.0.0")
add_subdirectory("${third_party}/lexbor-3.0.0")
set(CMAKE_FOLDER "json-3.12.0")
add_subdirectory("${third_party}/json-3.12.0")
set(CMAKE_FOLDER "asio")
include("${third_party}/asio/main.cmake")
unset(CMAKE_FOLDER)
find_package(OpenSSL REQUIRED)
# 基础库
set(src "${CMAKE_CURRENT_LIST_DIR}/src")
set(base_src ${src}/base)
file(GLOB_RECURSE base_srcs ${base_src}/*.h ${base_src}/*.cpp)
add_library(Base ${base_srcs})
target_compile_definitions(Base PUBLIC CPPHTTPLIB_OPENSSL_SUPPORT)
target_link_libraries(Base PUBLIC OpenSSL::SSL OpenSSL::Crypto)
target_link_libraries(Base PUBLIC yaml-cpp::yaml-cpp)
target_compile_definitions(Base PUBLIC CPPHTTPLIB_OPENSSL_SUPPORT)
target_link_libraries(Base PUBLIC lexbor_static)
target_link_libraries(Base PUBLIC nlohmann_json::nlohmann_json)
target_link_libraries(Base PUBLIC asio_object)
if (MSVC)
target_compile_options(Base PUBLIC /utf-8)
endif ()
target_include_directories(Base PUBLIC "${src}")
file(GLOB list CONFIGURE_DEPENDS LIST_DIRECTORIES true "${src}/*")
list(REMOVE_ITEM list "${src}/base")
foreach (cur_dir ${list})
get_filename_component(target "${cur_dir}" NAME)
file(GLOB_RECURSE cur_srcs ${cur_dir}/*.h ${cur_dir}/*.cpp)
add_executable(${target} ${cur_srcs})
target_link_libraries(${target} PRIVATE Base)
endforeach ()