我正在使用 jamplus 构建供应商的跨平台项目。在 osx 上,C 工具的命令行(通过 clang 输入到 ld)太长。
响应文件是命令行太长的经典答案:jamplus 在手册中指出可以即时生成它们。
手册中的示例如下所示:
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 的链接命令,并从列表中动态生成内容?我正在寻找一种侵入性最小的方法来处理这个问题——理想情况下,直接修改/覆盖工具,而不是在需要链接的地方添加新的间接目标——因为它是我们供应商的代码库,所以需要尽可能少的编辑。