向Cargo构建添加代码生成标志

9
在Macintosh上,为了允许某些符号不链接,需要将-C link-args='-Wl,-undefined,dynamic_lookup'传递给Rust编译器。在构建Postgres插件时需要这样做,因为一些Postgres内部函数仅编译到Postgres服务器中,而无法从共享库中链接。
目前,该项目的流程如下:
  • 使用cargo build -v运行构建。
  • 复制失败调用rustc并添加-C link-args='-Wl,-undefined,dynamic_lookup'
  • 成功!
这似乎很难自动化。有哪些选项可通过cargo向Rust构建添加代码生成标志?
1个回答

9

cargo 提供了 rustc 命令,允许传递任意编译器标志。以下命令可实现:

% cargo rustc -- -C link-args='-Wl,-undefined,dynamic_lookup'

3
谢谢,这很有帮助。但我不确定是否接受,因为它没有提供记录和自动化构建过程的方法。 - solidsnack
这确实是做任何接近的事情的唯一方法,所以是时候接受了。 - solidsnack
没有办法将它放入toml文件中吗?真的一点办法都没有吗? - MajesticRa
@MajesticRa,不是的,Cargo明确设计了反对此类操作。通过清单中的[profile]部分提供了由标志控制的编译器配置子集的访问权限。 - Vladimir Matveev
1
啊...那是2年前的事了。我记得Rust还有类和垃圾回收器))) 我的意思是...在1.0版本之前,Rust的概念正在迅速变化。 - MajesticRa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接