57 lines
1.7 KiB
CMake
57 lines
1.7 KiB
CMake
cmake_minimum_required(VERSION 3.22)
|
||
project(yama_client LANGUAGES CXX C)
|
||
|
||
set(CMAKE_CXX_STANDARD 17)
|
||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||
|
||
# YAMA 根目录(相对于本文件:cpp/ → main/ → src/ → app/ → android/ → YAMA/)
|
||
get_filename_component(YAMA_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/../../../../../" ABSOLUTE)
|
||
|
||
# ---- 头文件搜索路径(与 linux/CMakeLists.txt 同构)----
|
||
include_directories(
|
||
${YAMA_ROOT}
|
||
${YAMA_ROOT}/client
|
||
${YAMA_ROOT}/compress
|
||
${CMAKE_CURRENT_SOURCE_DIR} # android_compat.h
|
||
)
|
||
|
||
# ---- 强制注入兼容头(替代修改共用源文件)----
|
||
add_compile_options(-include "${CMAKE_CURRENT_SOURCE_DIR}/android_compat.h")
|
||
|
||
# ---- 核心源文件(与 linux/CMakeLists.txt 相同)----
|
||
set(CORE_SOURCES
|
||
${YAMA_ROOT}/client/Buffer.cpp
|
||
${YAMA_ROOT}/client/IOCPClient.cpp
|
||
${YAMA_ROOT}/client/sign_shim_unix.cpp
|
||
${YAMA_ROOT}/common/logger.cpp
|
||
${YAMA_ROOT}/common/ikcp.c
|
||
)
|
||
|
||
# ---- Android NDK 入口 ----
|
||
set(ANDROID_SOURCES
|
||
main.cpp
|
||
)
|
||
|
||
add_library(yama SHARED ${CORE_SOURCES} ${ANDROID_SOURCES})
|
||
|
||
# ---- 预编译静态库(由 android/build_android_libs.ps1 产出)----
|
||
# 支持 arm64-v8a / armeabi-v7a(真机)和 x86 / x86_64(Android 模拟器)
|
||
target_link_libraries(yama PRIVATE
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/lib/${ANDROID_ABI}/libsign.a"
|
||
)
|
||
target_link_libraries(yama PRIVATE
|
||
"${CMAKE_CURRENT_SOURCE_DIR}/lib/${ANDROID_ABI}/libzstd.a"
|
||
)
|
||
|
||
# ---- Android 系统库 ----
|
||
target_link_libraries(yama PRIVATE android log)
|
||
|
||
# ---- 编译选项 ----
|
||
target_compile_options(yama PRIVATE
|
||
-O2
|
||
-fvisibility=hidden
|
||
-Wno-unused-parameter
|
||
-Wno-missing-field-initializers
|
||
)
|