diff --git a/CMakeLists.txt b/CMakeLists.txt index be8bcc142..5476ee2f0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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")