编译rust时,有没有办法有条件地编译wasm_bindgen属性?

时间:2018-10-22 15:00:46

标签: compilation rust webassembly wasm-bindgen

我最近一直在阅读Rust Wasm Book。在其中,它利用了<ion-row> <ion-col size="6" size-sm="4" size-lg="3" no-padding *ngFor="let product of currentProducts"> <ion-card class="product" (click)="productSelected(product)"> <ion-card-content> <div class="product"> <img src="{{product.thumbnails[0]}}" alt="brandLogo"> <div class="product-text"> <h3 text-center>{{product.brand.name}}</h3> <h5 text-center>{{product.name}}</h5> <p text-center>{{product.itemNumber}}</p> <h6 text-center>${{product.retailPrice}}</h6> </div> </div> </ion-card-content> </ion-card> </ion-col> </ion-row> wasm_bindgen注释。在section 5.5“调试”中,提到了以下内容:

  

请注意,为了在没有编译器和链接器错误的情况下运行#[test],   您将需要注释掉crate-type =“ cdylib”中的位   wasm-game-of-life / Cargo.toml。

类似地,建议在运行基准测试时在下一部分的方法/结构上注释掉#[wasm_bindgen]属性。

要为此添加更复杂的部分,在复杂的wasm应用程序中有类似以下内容的部分:

#[wasm-bindgen]

我也需要注释掉这些部分,以使代码在本地运行。

这当然看起来很乏味。我的问题是,是否有一种方法可以通过编译器(或通过货物脚本)自动完成此工作,以便我可以指定诸如#[wasm_bindgen] extern "C" { #[wasm_bindgen(js_namespace = performance)] fn now() -> f64; } cargo build之类的命令,这些命令将本地编译(已禁用属性),并且可能使用cargo test之类的方法在启用wasm_bindgen的情况下进行构建。

我考虑过编写一个单独的cargo build --feature=wasm脚本,该脚本将所有源代码和build.rs文件复制到一个中间目录(这样就不会修改您的源代码),并进行注释,然后然后从此源构建。当然,这里的问题是:1)构建脚本正在编辑您的源代码,因此行号将关闭,以及2)看起来不干净-解决此问题的一种简便方法。

我想知道其他人是否有我可以使用的建议或他们使用过的东西,因为这似乎是非常可取的行为。

0 个答案:

没有答案