|
|
|
cmake_minimum_required(VERSION 3.12)
|
|
|
|
project(UftDevServer)
|
|
|
|
|
|
|
|
# 强制统一运行时库
|
|
|
|
if(MSVC)
|
|
|
|
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# 设置vcpkg工具链路径
|
|
|
|
set(CMAKE_TOOLCHAIN_FILE "D:/aigc/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file")
|
|
|
|
|
|
|
|
# 设置C++标准
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
|
|
|
|
# 设置源文件目录
|
|
|
|
set(SOURCE_DIR src)
|
|
|
|
|
|
|
|
add_subdirectory(imgui)
|
|
|
|
|
|
|
|
|
|
|
|
# 查找依赖包
|
|
|
|
find_package(Drogon CONFIG REQUIRED)
|
|
|
|
find_package(RapidJSON CONFIG REQUIRED)
|
|
|
|
|
|
|
|
|
|
|
|
set(SOURCES
|
|
|
|
src/main.cpp
|
|
|
|
src/controllers/*.cpp
|
|
|
|
src/filters/*.cpp
|
|
|
|
)
|
|
|
|
|
|
|
|
# 使用GLOB展开通配符
|
|
|
|
file(GLOB_RECURSE SOURCES_EXPANDED ${SOURCES})
|
|
|
|
|
|
|
|
# 添加可执行文件
|
|
|
|
add_executable(${PROJECT_NAME}
|
|
|
|
${SOURCES_EXPANDED}
|
|
|
|
)
|
|
|
|
|
|
|
|
# 链接库
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
|
|
Drogon::Drogon
|
|
|
|
imgui
|
|
|
|
${CMAKE_DL_LIBS} # 用于动态加载
|
|
|
|
)
|
|
|
|
|
|
|
|
# 包含目录
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE
|
|
|
|
${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()
|
|
|
|
|