diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c4577803..c9920a830 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,37 +1,44 @@ cmake_minimum_required(VERSION 3.10) # 项目名称 -project("AndKittyImGuiMod") +project(AndKittyModProject) -# C++ 17 标准支持 +# C++ 标准设置 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -# 1. 包含路径 +# --- 1. 设置路径变量 --- +set(SOURCE_DIR ${CMAKE_SOURCE_DIR}) +set(IMGUI_DIR ${SOURCE_DIR}/imgui) + +# --- 2. 包含头文件路径 --- include_directories( - ${CMAKE_SOURCE_DIR} - ${CMAKE_SOURCE_DIR}/backends + ${SOURCE_DIR} + ${SOURCE_DIR}/include + ${IMGUI_DIR} + ${IMGUI_DIR}/backends ) -# 2. 库查找路径 -link_directories(${CMAKE_SOURCE_DIR}) +# --- 3. 引用 Dobby 静态库 --- +# 假设你的 Dobby 库放在 libs/arm64-v8a/libdobby.a +add_library(dobby STATIC IMPORTED) +set_target_properties(dobby PROPERTIES IMPORTED_LOCATION + ${SOURCE_DIR}/libs/${ANDROID_ABI}/libdobby.a) -# 3. 定义插件源文件 (.so) -set(SOURCE_FILES +# --- 4. 构建主菜单插件 (libMyMenu.so) --- +set(PLUGIN_SOURCES main.cpp - imgui.cpp - imgui_draw.cpp - imgui_widgets.cpp - imgui_tables.cpp - imgui_demo.cpp - backends/imgui_impl_android.cpp - backends/imgui_impl_opengl3.cpp + ${IMGUI_DIR}/imgui.cpp + ${IMGUI_DIR}/imgui_draw.cpp + ${IMGUI_DIR}/imgui_widgets.cpp + ${IMGUI_DIR}/imgui_tables.cpp + ${IMGUI_DIR}/backends/imgui_impl_android.cpp + ${IMGUI_DIR}/backends/imgui_impl_opengl3.cpp ) -# 4. 生成共享库 (.so) -add_library(MyMenu SHARED ${SOURCE_FILES}) +add_library(MyMenu SHARED ${PLUGIN_SOURCES}) -# 5. 链接插件依赖库 +# 链接插件所需的系统库 target_link_libraries(MyMenu dobby log @@ -40,14 +47,24 @@ target_link_libraries(MyMenu android ) -# 6. --- 新增:生成独立注入器可执行文件 (injector) --- +# --- 5. 构建独立注入器 (injector) --- +# 该可执行文件用于 Ptrace 注入,不依赖上面的插件库 add_executable(injector injector.cpp) -# 注入器需要链接 dl 库来处理远程地址映射 +# 注入器需要链接 log (用于输出调试信息) 和 dl (用于 dlopen 相关操作) target_link_libraries(injector - dl log + dl ) -# 设置注入器为静态链接 C++ 运行库,确保在手机上直接运行不会缺库 +# --- 6. 编译优化与兼容性设置 --- +# 为插件设置符号隐藏,减小体积 +set_target_properties(MyMenu PROPERTIES CXX_VISIBILITY_PRESET hidden) + +# 为注入器设置静态链接 C++ 运行库 +# 这样即使在精简版安卓系统上运行也不会报错找不到 libc++_shared.so set_target_properties(injector PROPERTIES LINK_FLAGS "-static-libstdc++") + +# 打印构建信息以便调试 +message(STATUS "Android ABI: ${ANDROID_ABI}") +message(STATUS "NDK Path: ${ANDROID_NDK}")