我有一个Makefile变量叫做OBJECTS,其中包含一系列对象,但由于命令缓冲区太小,无法全部存储。因此,我使用以下方法创建一个文件来列出这些对象(以便传递给ar):
objects.lst:
$(foreach OBJ,$(OBJECTS),$(shell echo "$(OBJ)">>$@))
虽然这种方法可行,但非常缓慢(至少在Cygwin上),而且我不喜欢依赖shell命令和重定向。
此外,foreach不是为此目的而设计的-它在运行任何命令之前就已经被评估了,这意味着我无法在追加之前执行例如rm -f objects.lst
的命令。
有更好的方法吗?我不想使用增量归档,因为这会导致多个任务出现问题。
我唯一能想到的是使用单独的脚本解析Makefile以读取对象列表,或者将对象列表存储在单独的文件中。不过这两种解决方案都有自己的问题。