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 )