我正在使用Rust,bindgen和build script来处理对库的一些FFI绑定。
这个库是使用OpenMP构建的,所以当链接它时,我通常会将-fopenmp
标志传递给编译器。
当Cargo构建库时,如何通过build.rs
设置此标志?
目前,使用Cargo构建失败,失败的命令类似于:
cc -Wl,--as-needed -Wl,-z,noexecstack -m64 -l gomp -l stdc++
...skipping dozens of paths/files...
-Wl,-Bdynamic -l dl -l rt -l pthread -l gcc_s -l c -l m -l rt -l pthread -l util
因数百undefined reference to 'GOMP_parallel_end'
个错误而失败。
重新运行上面生成的命令并手动添加-fopenmp
标志成功。
我可以在编译之前使用RUSTFLAGS='-C link-args=-fopenmp'
指定标记,但有没有办法在build.rs
内指定它?
答案 0 :(得分:5)
你做不到。相反,您可以使用货物configuration file。
[build]
rustflags = ["-C", "link-args=-fsome-artisanal-option"]
$ cargo build --verbose
Compiling example v0.1.0 (file:///private/tmp/example)
Running `rustc ...blah blah blah... -C link-args=-fsome-artisanal-option`
error: linking with `cc` failed: exit code: 1
|
= note: "cc" "-m64" ...blah blah blah... "-fsome-artisanal-option"
= note: clang: error: unknown argument: '-fsome-artisanal-option'
另见: