Update CMakeLists.txt

This commit is contained in:
gggaa2152 2026-04-06 06:47:43 +08:00 committed by GitHub
parent 0d2348557a
commit 85d2519c02
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,56 +1,44 @@
cmake_minimum_required(VERSION 3.10)
project(JKMenu)
project(ModMenu)
# 1. 强制使用静态 STL,减少对系统库的依赖
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(ANDROID_STL c++_static)
# 2. 包含目录(确保 backends 路径正确)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/backends)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) # 如果 Dobby 的头文件在 include 里
# 3. ImGui 源文件定义
set(IMGUI_SRCS
imgui.cpp
imgui_draw.cpp
imgui_widgets.cpp
imgui_tables.cpp
imgui_demo.cpp
backends/imgui_impl_android.cpp
backends/imgui_impl_opengl3.cpp
# --- 1. 引入 ImGui 源码 (假设放在项目根目录的 imgui 文件夹) ---
set(IMGUI_DIR ${CMAKE_CURRENT_SOURCE_DIR}/imgui)
set(IMGUI_SOURCES
${IMGUI_DIR}/imgui.cpp
${IMGUI_DIR}/imgui_draw.cpp
${IMGUI_DIR}/imgui_tables.cpp
${IMGUI_DIR}/imgui_widgets.cpp
${IMGUI_DIR}/backends/imgui_impl_android.cpp
${IMGUI_DIR}/backends/imgui_impl_opengl3.cpp
)
# --- 重点:编译插件库 libJKMenu.so ---
# 增加渲染相关的源文件,确保 OpenGL 绑定完整
add_library(JKMenu SHARED
main.cpp
${IMGUI_SRCS}
# --- 2. 引入 Dobby Hook 库 ---
# 假设 dobby.h 在根目录,libdobby.a 在根目录下的 libs/${ANDROID_ABI}/ 文件夹中
set(DOBBY_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR})
set(DOBBY_LIB_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI})
add_library(dobby STATIC IMPORTED)
set_target_properties(dobby PROPERTIES IMPORTED_LOCATION ${DOBBY_LIB_DIR}/libdobby.a)
# --- 3. 创建你的目标库 libmodmenu.so ---
add_library(modmenu SHARED main.cpp ${IMGUI_SOURCES})
# --- 4. 包含头文件路径 ---
target_include_directories(modmenu PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${IMGUI_DIR}
${IMGUI_DIR}/backends
${DOBBY_INCLUDE}
)
# 4. 解决符号隐藏问题 (非常重要!)
# 很多游戏会扫描导出的符号,隐藏非必要符号可以提高隐蔽性并防止冲突
set_target_properties(JKMenu PROPERTIES
C_VISIBILITY_PRESET hidden
CXX_VISIBILITY_PRESET hidden
VISIBILITY_INLINES_HIDDEN ON
# --- 5. 链接必要的系统库和 Dobby 库 ---
target_link_libraries(modmenu
dobby
android
EGL
GLESv3
log
z
)
# 5. 链接库文件
# 注意:Dobby 最好使用全路径,且放在最后链接
target_link_libraries(JKMenu
android
log
EGL
GLESv3
-Wl,--whole-archive ${CMAKE_CURRENT_SOURCE_DIR}/libdobby.a -Wl,--no-whole-archive
-static-libstdc++
)
# --- 编译注入器 ---
add_executable(jk_injector injector.cpp)
target_link_libraries(jk_injector log)
# 6. 设置输出名称
set_target_properties(JKMenu PROPERTIES OUTPUT_NAME "JKMenu")