You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.3 KiB

2 months ago
cmake_minimum_required(VERSION 3.12)
2 months ago
project(UftDevServer)
2 months ago
# 设置 vcpkg 工具链
set(CMAKE_TOOLCHAIN_FILE "D:/aigc/vcpkg/scripts/buildsystems/vcpkg.cmake")
2 months ago
# 设置 C++ 标准
2 months ago
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)
2 months ago
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)
2 months ago
# 添加可执行文件
add_executable(${PROJECT_NAME}
${SOURCE_DIR}/main.cpp
${SOURCE_DIR}/controllers/HelloWorldController.cpp
${SOURCE_DIR}/controllers/ApiController.cpp
${SOURCE_DIR}/filters/ApiFilter.cpp
)
# 链接库(手动指定 RCCPP 的库名)
2 months ago
target_link_libraries(${PROJECT_NAME} PRIVATE
Drogon::Drogon
${CMAKE_DL_LIBS}
RuntimeCompiledCPlusPlus::RuntimeCompiledCPlusPlus
2 months ago
)
# 其他配置(包含目录、文件拷贝等保持不变)
2 months ago
target_include_directories(${PROJECT_NAME} PRIVATE
${RCCPP_INCLUDE_DIRS}
2 months ago
${SOURCE_DIR}
${SOURCE_DIR}/controllers
${SOURCE_DIR}/filters
)
2 months ago
2 months ago
# 配置文件拷贝
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()