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.
84 lines
2.0 KiB
84 lines
2.0 KiB
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() |
|
|
|
|