Как собрать rust проект с использованием LLVM в Github Actions?

Сейчас я работаю над компилятором с использованием LLVM (библиотека inkwell) - https://github.com/mealet/tpl-lang

Возника проблема: не могу собрать его под 3 платформы для релиза, поэтому решил попробовать Github Actions. Но тут возникли неполадки с компиляцией.

Код, который я использовал:
build.yml

name: Build

on:
  workflow_dispatch:

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    name: • ${{ matrix.target }}
    runs-on: ${{ matrix.target }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - target: ubuntu-latest
          - target: windows-latest
          - target: macos-latest

    steps:
      - name: ? Checkout Repository
        uses: actions/checkout@v4

      - name: ?️ LLVM Install
        uses: ZhongRuoyu/setup-llvm@v0
        with:
          llvm-version: 18

      - if: runner.os == 'Windows'
        continue-on-error: true
        run: |
          git clone https://github.com/microsoft/vcpkg.git
          cd vcpkg
          ./bootstrap-vcpkg.bat
          ./vcpkg install libxml2:x64-windows

      - if: runner.os == 'macOs'
        continue-on-error: true
        run: |
          brew install zstd

      - name: ? Rust Setup
        uses: dtolnay/rust-toolchain@stable

      - name: ⚙️ Rust Cache
        uses: swatinem/rust-cache@v2
        with:
          workspaces: './target'

      - name: ? Project Build
        run: |
          cargo build --release

      - name: ? Publish Artifacts
        uses: actions/upload-artifact@v4
        with:
          name: ${{ matrix.target }}
          path: ./target/release/

Процесс на Windows выдаёт ошибку:

= note: LINK : fatal error LNK1181: cannot open input file 'libxml2s.lib'␍

А Mac OS выдаёт уже другую:

= note: ld: warning: ignoring duplicate libraries:
    -lm'ld: library 'zstd' not found
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

Так что вопрос простой: "Что я делаю не так? Как мне сделать правильно?"


Ответы (0 шт):