Files
wind_power_cal/backend/CMakeLists.txt
T
2026-07-14 15:43:18 +08:00

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"
)