条件编译

条件编译的最小单位是文件。

在条件编译表达式中,支持三种逻辑操作符:andornot,其中 or 操作符可以省略不写。

例如,["or", "wasm", "wasm-gc"] 可以简写为 ["wasm", "wasm-gc"]

条件表达式中的条件可以分为后端和优化级别:

  • 后端条件"wasm""wasm-gc""js"
  • 优化等级条件"debug""release"

条件表达式支持嵌套。

如果一个文件未在 "targets" 中列出,它将默认在所有条件下编译。

示例:

{
    "targets": {
        "only_js.mbt": ["js"],
        "only_wasm.mbt": ["wasm"],
        "only_wasm_gc.mbt": ["wasm-gc"],
        "all_wasm.mbt": ["wasm", "wasm-gc"],
        "not_js.mbt": ["not", "js"],
        "only_debug.mbt": ["debug"],
        "js_and_release.mbt": ["and", ["js"], ["release"]],
        "js_only_test.mbt": ["js"],
        "js_or_wasm.mbt": ["js", "wasm"],
        "wasm_release_or_js_debug.mbt": ["or", ["and", "wasm", "release"], ["and", "js", "debug"]]
    }
}