1. 完善了对于不同平台的shader文件的处理

2. 新增了对红米5Plus的支持
3. 将嵌入式Linux平台的PTT按钮重构成了动态位置大小变化
4. 新增了以Debug编译时显示实时FPS信息显示,在桌面平台表现正常,在嵌入式Linux还存在问题
This commit is contained in:
Misaki
2026-07-06 18:21:30 +08:00
parent c036b005f8
commit 6b8983bc6d
10 changed files with 268 additions and 33 deletions
+37 -8
View File
@@ -10,13 +10,17 @@ set(CMAKE_AUTOUIC ON)
if(DEFINED TARGET_ARCH AND TARGET_ARCH STREQUAL "arm64")
set(PLAT "linux_arm")
set(ARCH "arm64")
set(CMAKE_PREFIX_PATH "/home/misaki/MisakiCodes/rk3566-sdk/3rd/Qt6.6.3")
if(NOT DEFINED CMAKE_PREFIX_PATH) # 优先使用外部传入的变量值
set(CMAKE_PREFIX_PATH "/home/misaki/MisakiCodes/rk3566-sdk/3rd/Qt6.6.3")
endif()
add_definitions(-DCSM_TARGET_HARMONYOS_ES3) # OpenGL ES 3.0 渲染宏
add_definitions(-DEMBEDDED_LINUX) # 嵌入式Linux专用宏
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64")
set(PLAT "linux_arm")
set(ARCH "arm64")
set(CMAKE_PREFIX_PATH "/home/misaki/MisakiCodes/rk3566-sdk/3rd/Qt6.6.3")
if(NOT DEFINED CMAKE_PREFIX_PATH)
set(CMAKE_PREFIX_PATH "/home/misaki/MisakiCodes/rk3566-sdk/3rd/Qt6.6.3")
endif()
add_definitions(-DCSM_TARGET_HARMONYOS_ES3)
add_definitions(-DEMBEDDED_LINUX)
elseif(WIN32)
@@ -73,6 +77,8 @@ file(GLOB_RECURSE YosugaSrc
"src/DAO/Src/*.cpp"
"src/UI/Render/TextRender/Src/*.cpp"
"src/UI/Render/TextRender/Inc/*.h"
"src/UI/Widgets/Src/*.cpp"
"src/UI/Widgets/Inc/*.hpp"
"src/Core/Src/*.cpp"
"src/Core/Inc/*.h"
"src/Utils/Inc/*.hpp"
@@ -92,6 +98,10 @@ if(NOT PLAT STREQUAL "linux_arm")
list(APPEND YosugaSrc ${DesktopUI_Src})
endif()
message(STATUS ">>> CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}")
message(STATUS ">>> CMAKE_FIND_ROOT_PATH = ${CMAKE_FIND_ROOT_PATH}")
message(STATUS ">>> Qt6_DIR = ${Qt6_DIR}")
# 查找Qt6模块以及其他必须模块
find_package(Qt6 COMPONENTS
Core
@@ -111,7 +121,8 @@ if(NOT PLAT STREQUAL "linux_arm")
find_package(OpenGL REQUIRED)
else ()
# 若为arm平台,对于C++采用静态链接标准库,避免环境复杂出现问题
set(CMAKE_EXE_LINKER_FLAGS "-static-libstdc++ -static-libgcc")
# --allow-shlib-undefined: 允许共享库存在未定义符号,运行时由目标设备的 glibc 解析(这是为了放置你使用的交叉编译工具链对glibc版本要求严格)
set(CMAKE_EXE_LINKER_FLAGS "-static-libstdc++ -static-libgcc -Wl,--allow-shlib-undefined")
endif ()
# 添加第三方子项目
@@ -222,9 +233,9 @@ if(PLAT STREQUAL "linux_arm") ## 针对嵌入式Linux的配置,部分条
Framework
Live2DCubismCore
# Mali GPU 驱动完整链接(EGLFS 必需)
-lmali-hook # 注意此处,你的soc不一定是该GPU,可能需要修改
-Wl,--whole-archive -lmali-hook-injector -Wl,--no-whole-archive
-lmali
# -lmali-hook # 注意此处,你的soc不一定是该GPU,可能需要修改
# -Wl,--whole-archive -lmali-hook-injector -Wl,--no-whole-archive
# -lmali
-ldrm
-lEGL
-lGLESv2
@@ -268,16 +279,34 @@ target_include_directories(${PROJECT_NAME} PRIVATE
src/UI/Menu/Inc
src/UI/Setting/Inc
src/UI/Render/TextRender/Inc
src/UI/Widgets/Inc
src/Core/Inc
src/DAO/Inc
src/Utils/Inc
)
# Debug 编译时启用 FPS 显示等调试功能
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DYOSUGA_DEBUG)
endif()
# 资源复制(所有平台)
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/other/Resources"
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/other/FrameworkShaders"
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
# 根据平台选择不同的 Shader 目录,但目标目录名统一为 FrameworkShaders
if(PLAT STREQUAL "linux_arm")
# 先清理旧的
file(REMOVE_RECURSE "${CMAKE_CURRENT_BINARY_DIR}/FrameworkShaders")
# 复制到构建目录 会生成 FrameworkShadersES
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/other/FrameworkShadersES"
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
# 重命名为 FrameworkShaders,最终路径 build/FrameworkShaders/
file(RENAME "${CMAKE_CURRENT_BINARY_DIR}/FrameworkShadersES"
"${CMAKE_CURRENT_BINARY_DIR}/FrameworkShaders")
else()
file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/other/FrameworkShaders"
DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
endif()
# Windows 特有的 DLL 复制
if(PLAT STREQUAL "windows")