【发布时间】:2023-03-28 02:16:01
【问题描述】:
我正在使用 jamplus 构建供应商的跨平台项目。在 osx 上,C 工具的命令行(通过 clang 提供给 ld)太长。
响应文件是对过长命令行的经典解决方案:手册中的 jamplus 声明可以即时生成它们。
example in the manual 看起来像这样:
actions response C++
{
$(C++) @@(-filelist @($(2)))
}
快到了!如果我特地把 C.Link 命令吹出来,像这样:
actions response C.Link
{
"$(C.LINK)" $(LINKFLAGS) -o $(<[1]:C) -Wl,-filelist,@($(2:TC)) $(NEEDLIBS:TC) $(LINKLIBS:TC))
}
在我的 jamfile 中,我得到了传递给链接器所需的命令行,但响应文件没有换行符终止,因此链接失败(osx ld 需要换行符分隔的条目)。
- 有没有办法扩展加入换行符的 jamplus 列表?我试过使用连接扩展
$(LIST:TCJ=\n)没有运气。$(LIST:TCJ=@(\n))也不起作用。如果我能做到这一点,那么生成的文件应该是正确的。 - 如果不是,我可以使用什么 jamplus 代码来覆盖 clang 的链接命令,并从列表中即时生成内容?我正在寻找一种侵入性最小的方法来处理这个问题——理想情况下,直接修改/覆盖工具,而不是在需要链接的地方添加新的间接目标——因为它是我们供应商的代码库,所以需要尽可能少的编辑。李>
【问题讨论】:
-
如果有超过 1500 名声望的人可以创建并添加 jamplus 标签,那就太棒了。
-
添加了 jamplus 标签
标签: macos osx-yosemite jam