使用Cabal链接自定义对象文件

3
在自定义的Cabal hook中,我生成了目标文件(*.o),我想将它们传递给链接器。我应该如何以惯用方式做到这一点?
解决方案 Don Stewart的回答是正确的方向。目前我按照以下步骤进行:
$ runhaskell Setup.lhs build --ld-options="PATHS TO .o FILES"
1个回答

2
根据UserHooksCabal文档,看起来您需要添加一个buildHook,通过指定额外的构建标志将您的.o文件添加到ld的构建标志中。
顺便提一下,你应该知道生成自定义的 .o 文件非常不寻常,很可能会使你的构建变得脆弱。Cabal 无法自动生成这些 .o 文件吗?

到处都是dons :) 我正在为一个库编写C++绑定,并将包装器C++文件传递给Cabal(通过'c-sources'),这会导致运行垃圾,这意味着Cabal需要调用适当的C++编译器来生成.o文件。 - Long
连接似乎发生在“buildHook”阶段内,但是我不能简单地将修改后的BuildFlags传递给默认的buildHook - 它们只是被忽略了(至少对我感兴趣的BuildFlags的部分)。但是暂时通过将参数作为命令行标志传递来解决这个问题,所以感谢您的指引。关于维基页面:这个解决方案似乎更加不合理,它看起来对我来说非常依赖gcc。 - Long
2
你能否把你的解决方案添加到问题中,以供后人参考? - Don Stewart

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