64 lines
2.0 KiB
CMake
64 lines
2.0 KiB
CMake
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"
|
|
)
|