Update CMakeLists.txt

This commit is contained in:
gggaa2152 2026-04-06 05:46:19 +08:00 committed by GitHub
parent 685f44e300
commit 28700f9849
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,17 +1,17 @@
cmake_minimum_required(VERSION 3.10)
project(JKMenu)
# 设置 C++ 标准和 STL
# 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 里
# ImGui 核心源文件
# 将所有 ImGui 源文件打入主库,防止报 liblibcimgui.so 找不到的错误
# 3. ImGui 源文件定义
set(IMGUI_SRCS
imgui.cpp
imgui_draw.cpp
@ -22,23 +22,35 @@ set(IMGUI_SRCS
backends/imgui_impl_opengl3.cpp
)
# 1. 编译注入器 (jk_injector)
# --- 重点:编译插件库 libJKMenu.so ---
# 增加渲染相关的源文件,确保 OpenGL 绑定完整
add_library(JKMenu SHARED
main.cpp
${IMGUI_SRCS}
)
# 4. 解决符号隐藏问题 (非常重要!)
# 很多游戏会扫描导出的符号,隐藏非必要符号可以提高隐蔽性并防止冲突
set_target_properties(JKMenu PROPERTIES
C_VISIBILITY_PRESET hidden
CXX_VISIBILITY_PRESET hidden
VISIBILITY_INLINES_HIDDEN ON
)
# 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)
# 2. 编译插件库 (libJKMenu.so)
add_library(JKMenu SHARED main.cpp ${IMGUI_SRCS})
# 链接库文件
# 确保 libdobby.a 在项目根目录下
target_link_libraries(JKMenu
${CMAKE_CURRENT_SOURCE_DIR}/libdobby.a
android
GLESv3
EGL
log
)
# 设置输出名称
set_target_properties(jk_injector PROPERTIES OUTPUT_NAME "jk_injector")
# 6. 设置输出名称
set_target_properties(JKMenu PROPERTIES OUTPUT_NAME "JKMenu")