优化IME处理和消息循环逻辑 #13
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: 构建 LVGL 原生库 | |
| on: | |
| push: | |
| branches: [main, develop, master] | |
| pull_request: | |
| branches: [main, master] | |
| workflow_dispatch: | |
| workflow_call: | |
| jobs: | |
| build: | |
| name: 构建 ${{ matrix.rid }} | |
| runs-on: ${{ matrix.os }} | |
| permissions: | |
| contents: read | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Windows — 通过 MSVC -A 参数构建多架构 | |
| - rid: win-x64 | |
| os: windows-latest | |
| cmake_generator: "Visual Studio 17 2022" | |
| cmake_arch: x64 | |
| - rid: win-x86 | |
| os: windows-latest | |
| cmake_generator: "Visual Studio 17 2022" | |
| cmake_arch: Win32 | |
| - rid: win-arm64 | |
| os: windows-latest | |
| cmake_generator: "Visual Studio 17 2022" | |
| cmake_arch: ARM64 | |
| # Linux — 原生 x64(与 LVGL 官方 CI 一致,使用 ubuntu-24.04) | |
| - rid: linux-x64 | |
| os: ubuntu-24.04 | |
| cmake_extra: "" | |
| # Linux — ARM 交叉编译(硬浮点) | |
| - rid: linux-arm | |
| os: ubuntu-24.04 | |
| apt_packages: gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf | |
| cmake_extra: >- | |
| -DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/libs/cmake/toolchains/arm-linux-gnueabihf.cmake | |
| # Linux — ARM64 交叉编译 | |
| - rid: linux-arm64 | |
| os: ubuntu-24.04 | |
| apt_packages: gcc-aarch64-linux-gnu g++-aarch64-linux-gnu | |
| cmake_extra: >- | |
| -DCMAKE_TOOLCHAIN_FILE=$GITHUB_WORKSPACE/libs/cmake/toolchains/aarch64-linux-gnu.cmake | |
| steps: | |
| - name: 检出代码 | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| # ─── 将 lv_conf.h 复制到 lvgl 源码目录 ──────────────────────────────── | |
| # LVGL 的 CMake 在 CMAKE_SOURCE_DIR(libs/lvgl/)中查找 lv_conf.h, | |
| # 而该文件位于上一级 libs/lv_conf.h,因此需要复制到正确位置。 | |
| - name: 复制 lv_conf.h 到 lvgl 源码目录 | |
| shell: bash | |
| run: cp libs/lv_conf.h libs/lvgl/lv_conf.h | |
| # ─── Linux:安装构建依赖(参考 LVGL 官方 CI)────────────────────────── | |
| # 参考:https://github.com/lvgl/lvgl/blob/master/.github/workflows/ccpp.yml | |
| # 基础依赖:cmake、ninja-build;交叉编译时额外安装对应工具链 | |
| - name: 安装 Linux 构建依赖 | |
| if: runner.os == 'Linux' | |
| run: | | |
| sudo apt-get update -qq | |
| sudo apt-get install -y cmake ninja-build ${{ matrix.apt_packages }} | |
| # ─── Windows 构建 ──────────────────────────────────────────────────────── | |
| - name: CMake 配置(Windows) | |
| if: runner.os == 'Windows' | |
| shell: bash | |
| run: | | |
| cmake -S libs/lvgl -B libs/lvgl/build_shared \ | |
| -G "${{ matrix.cmake_generator }}" \ | |
| -A "${{ matrix.cmake_arch }}" \ | |
| -DCONFIG_LV_BUILD_EXAMPLES=OFF \ | |
| -DCONFIG_LV_BUILD_DEMOS=OFF \ | |
| -DCONFIG_LV_USE_THORVG_INTERNAL=OFF \ | |
| -DBUILD_SHARED_LIBS=ON \ | |
| -DCONFIG_LV_USE_PRIVATE_API=ON | |
| - name: 编译(Windows) | |
| if: runner.os == 'Windows' | |
| shell: bash | |
| run: cmake --build libs/lvgl/build_shared --config Release | |
| # ─── Linux 构建(使用 Ninja,参考 LVGL 官方 CI)───────────────────────── | |
| - name: CMake 配置(Linux) | |
| if: runner.os == 'Linux' | |
| run: | | |
| cmake -S libs/lvgl -B libs/lvgl/build_shared \ | |
| -G Ninja \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| ${{ matrix.cmake_extra }} \ | |
| -DCONFIG_LV_BUILD_EXAMPLES=OFF \ | |
| -DCONFIG_LV_BUILD_DEMOS=OFF \ | |
| -DCONFIG_LV_USE_THORVG_INTERNAL=OFF \ | |
| -DBUILD_SHARED_LIBS=ON \ | |
| -DCONFIG_LV_USE_PRIVATE_API=ON | |
| - name: 编译(Linux) | |
| if: runner.os == 'Linux' | |
| run: cmake --build libs/lvgl/build_shared | |
| # ─── 收集输出文件 ──────────────────────────────────────────────────────── | |
| - name: 收集原生库文件 | |
| shell: bash | |
| run: | | |
| mkdir -p native_output | |
| # Windows:从 Release 子目录复制 DLL | |
| find libs/lvgl/build_shared -name "lvgl.dll" | head -1 | xargs -I{} cp {} native_output/ 2>/dev/null || true | |
| # Linux:复制 SO 文件(优先无版本号的符号链接) | |
| so=$(find libs/lvgl/build_shared -name "liblvgl.so" | head -1) | |
| if [ -n "$so" ]; then | |
| cp "$so" native_output/liblvgl.so | |
| fi | |
| ls -la native_output/ | |
| - name: 上传原生库制品 | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: native-${{ matrix.rid }} | |
| path: native_output/ | |
| if-no-files-found: error |