复现已有算法
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
cmake_minimum_required(VERSION 3.16.3)
|
||||
project(wind_server VERSION 1.0 LANGUAGES CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
# 定位项目根目录(支持独立构建和作为子工程)
|
||||
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
||||
set(REPO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
||||
else()
|
||||
set(REPO_ROOT "${CMAKE_SOURCE_DIR}")
|
||||
endif()
|
||||
|
||||
# ---- 架构检测 ----
|
||||
if(NOT DEFINED TARGET_ARCH)
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(armv7.*|arm)$")
|
||||
set(TARGET_ARCH "arm32")
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64)$")
|
||||
set(TARGET_ARCH "arm64")
|
||||
else()
|
||||
set(TARGET_ARCH "x64")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# ---- 本地 Drogon/Trantor (third_party 编译产物) ----
|
||||
if(NOT DEFINED DROGON_LOCAL_PREFIX)
|
||||
set(DROGON_LOCAL_PREFIX "${REPO_ROOT}/third_party/drogon/install/${TARGET_ARCH}")
|
||||
endif()
|
||||
if(EXISTS "${DROGON_LOCAL_PREFIX}/libs/cmake/Drogon/DrogonConfig.cmake")
|
||||
list(PREPEND CMAKE_PREFIX_PATH "${DROGON_LOCAL_PREFIX}")
|
||||
set(Drogon_DIR "${DROGON_LOCAL_PREFIX}/libs/cmake/Drogon" CACHE PATH "" FORCE)
|
||||
set(Trantor_DIR "${DROGON_LOCAL_PREFIX}/libs/cmake/Trantor" CACHE PATH "" FORCE)
|
||||
message(STATUS "Using local Drogon from ${DROGON_LOCAL_PREFIX}")
|
||||
endif()
|
||||
|
||||
find_package(Drogon CONFIG REQUIRED)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
file(GLOB_RECURSE SOURCES
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.h"
|
||||
)
|
||||
|
||||
# 复制配置文件到 build 目录
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/config/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/config)
|
||||
|
||||
add_executable(wind_server ${SOURCES})
|
||||
|
||||
target_include_directories(wind_server PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src
|
||||
${REPO_ROOT}/third_party
|
||||
)
|
||||
|
||||
target_link_libraries(wind_server PRIVATE
|
||||
Drogon::Drogon
|
||||
Threads::Threads
|
||||
)
|
||||
|
||||
# 运行期 .so 解析:RPATH 指向 Drogon install 的 libs 目录
|
||||
set_target_properties(wind_server PROPERTIES
|
||||
BUILD_RPATH "${DROGON_LOCAL_PREFIX}/libs"
|
||||
INSTALL_RPATH "$ORIGIN/../lib;${DROGON_LOCAL_PREFIX}/libs"
|
||||
)
|
||||
Reference in New Issue
Block a user