cmake_minimum_required(VERSION 3.12) project(UftDevServer) # 设置 vcpkg 工具链 set(CMAKE_TOOLCHAIN_FILE "D:/aigc/vcpkg/scripts/buildsystems/vcpkg.cmake") # 设置 C++ 标准 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 设置源文件目录 set(SOURCE_DIR src) # 设置RCC++编译选项 set(RCCPP_SOURCE_DIR ${SOURCE_DIR}) set(RCCPP_INCLUDE_DIRS ${SOURCE_DIR} ${SOURCE_DIR}/controllers ${SOURCE_DIR}/filters) # 查找其他依赖(Drogon, RapidJSON) find_package(Drogon CONFIG REQUIRED) find_package(RapidJSON CONFIG REQUIRED) # 查找其他依赖(Drogon, RapidJSON) set(RCCPP_DIR "D:/aigc/manta/uft_dev_server/third_party/RuntimeCompiledCPlusPlus/Aurora") find_package(RuntimeCompiledCPlusPlus REQUIRED) # 添加可执行文件 add_executable(${PROJECT_NAME} ${SOURCE_DIR}/main.cpp ${SOURCE_DIR}/controllers/HelloWorldController.cpp ${SOURCE_DIR}/controllers/ApiController.cpp ${SOURCE_DIR}/filters/ApiFilter.cpp ) # 链接库(手动指定 RCCPP 的库名) target_link_libraries(${PROJECT_NAME} PRIVATE Drogon::Drogon ${CMAKE_DL_LIBS} RuntimeCompiledCPlusPlus::RuntimeCompiledCPlusPlus ) # 其他配置(包含目录、文件拷贝等保持不变) target_include_directories(${PROJECT_NAME} PRIVATE ${RCCPP_INCLUDE_DIRS} ${SOURCE_DIR} ${SOURCE_DIR}/controllers ${SOURCE_DIR}/filters ) # 配置文件拷贝 set(CONFIG_SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/config/config.json") set(CONFIG_DEST "${CMAKE_CURRENT_BINARY_DIR}/Debug/config.json") add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CURRENT_BINARY_DIR}/Debug" COMMAND ${CMAKE_COMMAND} -E copy "${CONFIG_SRC}" "${CONFIG_DEST}" COMMENT "Copying config.json to output directory" VERBATIM ) # 处理多配置情况 if(CMAKE_CONFIGURATION_TYPES) foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES}) set(CFG_DIR "${CMAKE_CURRENT_BINARY_DIR}/${CFG_TYPE}") add_custom_command( TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${CFG_DIR}" COMMAND ${CMAKE_COMMAND} -E copy "${CONFIG_SRC}" "${CFG_DIR}/config.json" COMMENT "Copying config.json to ${CFG_TYPE} directory" VERBATIM ) endforeach() endif()