我试图找到一种方法来编写一个几乎完全是纯make的Makefile,以便能够轻松地将其移植到Windows而不依赖于特定的扩展。希望能够在cmd.exe中执行。
我需要写一个由空格分隔的5个值的文件,所以我做了这样的事情:
recipe: $(TARGETS)
$(foreach target,$^,$(file >> file.txt,$(shell $(target))))
问题是$(file ...)
的每次执行都会为文件添加一个新行,无论我是否过滤掉行,似乎都是在执行函数后完成的。
有没有办法在配方中的变量中累积$(target)
的执行结果,之后只需使用$(file ...)
输出连接在一起的所有内容?
答案 0 :(得分:1)
我不知道“没有shell”是什么意思,因为你在食谱中明确使用了$(shell ...)
。无论如何没有现实生活中的例子我们可以尝试我无法确定,但你不能只是颠倒file
和foreach
函数的顺序吗?
recipe: $(TARGETS)
$(file >>file.txt,$(foreach target,$^,$(shell $(target))))