【发布时间】:2011-08-12 12:04:09
【问题描述】:
因为GNU make 允许变量与内存一样大,所以构建大量依赖列表没有问题。但是,如果您想在配方中实际使用这些文件列表(用于构建目标的 shell 命令序列),您会遇到一个问题:该命令可能超过 shell 的 命令行长度限制,产生诸如“参数列表太长”之类的错误。
例如,假设我想连接列表$(INPUTS) 中包含的几个文件以生成一个文件combined.txt。通常,我可以使用:
combined.txt: $(INPUTS)
cat $^ > $@
但是如果$(INPUTS) 包含数千个文件,就像我的情况一样,对cat 的调用太长并且失败。一般有没有办法解决这个问题?可以安全地假设存在一些与一个巨大命令具有相同行为的命令序列——在这种情况下,一系列cat 命令,每个输入文件一个,使用>> 附加到combined.txt会工作。但是如何说服make 生成这些命令呢?
【问题讨论】:
标签: makefile