1104版本的 native 后端需要 cl.exe 支持吗?


记得之前版本没有这个提示的,更新了 MoonBit 插件到最新后,就有这个提示了。这是说明后面 native 编译都需要提前安装微软 build tools 套件了吗?

目前 native 后端的工作模式是这样的:

  • 在默认状态下,不需要安装任何 C 工具链也能跑
  • 在手动指定了 --release,或者有 C FFI/定制 cc flag 需求的时候,会使用系统的 C 编译器,在 Windows 下就是 MSVC

你这里的情况是构建系统的一个 bug,我们会尽快修复,感谢反馈。作为 workaround,可以考虑下面两种做法:

  1. 先临时装个 MSVC
  2. 随便装一个任意的 C 编译器,然后在 main 包的 moon.pkg.json 里加上:
    {
      ... // 原来的配置
      "link": {
        "native": {
          "cc": "你的C编译器"
        }
      }
    }
    

下一次 release 或者明天安装一下 nightly 版本的编译器应该问题就会修复了,然后就不改配置也可以工作了。

为什么我默认会出错, --release也是有问题,msvc都有安装

thread '<unnamed>' panicked at C:\Users\runneradmin/.cargo\git\checkouts\n2-e90a381ad9753ef2\4d42dd7\src\process_win.rs:33:10:
called `Result::unwrap()` on an `Err` value: Utf8Error { valid_up_to: 4, error_len: Some(1) }
thread 'note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
<unnamed>' panicked at C:\Users\runneradmin/.cargo\git\checkouts\n2-e90a381ad9753ef2\4d42dd7\src\process_win.rs:33:10:
called `Result::unwrap()` on an `Err` value: Utf8Error { valid_up_to: 4, error_len: Some(1) }