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) # 第三方库引入 add_subdirectory(${CMAKE_SOURCE_DIR}/yaml-cpp-master) find_package(OpenSSL REQUIRED) # 基础库 set(src ${CMAKE_SOURCE_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) 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 ()