因为GNUmake允许变量与内存允许的一样大,所以构建大量依赖列表没有问题.但是,如果要在配方中实际使用这些文件列表(用于构建目标的shell命令序列),则会遇到问题:命令可能超出shell的命令行长度限制,从而产生错误,例如"参数"列表太长了".
例如,假设我想连接列表中包含的几个文件$(INPUTS)以生成文件combined.txt.通常,我可以使用:
combined.txt: $(INPUTS)
cat $^ > $@
Run Code Online (Sandbox Code Playgroud)
但是,如果$(INPUTS)包含数千个文件,就像在我的情况下那样,调用cat太长并且失败.有没有办法解决这个问题?可以安全地假设存在一些与一个巨大命令具有相同行为的命令序列 - 在这种情况下,一系列cat命令(每个输入文件一个)>>用于追加combined.txt将起作用.但是如何make说服生成这些命令呢?
makefile ×1