请注意,我不想将所有 make输出重定向到文件。我只希望将$(warning)命令的输出发送到文件。
someTarget:
$(warning building $@ using $?) >> someLogFile.txt
我上面的示例没有将输出从$重定向(警告到someLogFile。有没有办法做到这一点?可能将其重定向到变量然后将其回送到文件? 感谢。
答案 0 :(得分:0)
有没有办法将$(警告)或$(info)语句重定向到文件?
这是GNU Make的一个,但它并不漂亮:
<强>生成文件强>
LOG := log.txt
TARGET_ACQUIRED = \
$(shell echo 'NO_SUCH_TARGET:' | $(MAKE) --eval='$$(info Target acquired: $@...)' -s -f - >> $(LOG))
target_a: target_b
$(TARGET_ACQUIRED)
touch $@
target_b:
$(TARGET_ACQUIRED)
touch $@
clean:
rm -f target_* $(LOG)
您将获得:
$ make
touch target_b
touch target_a
$ cat log.txt
Target acquired: target_b...
Target acquired: target_a...
要理解这种诡计,请参阅GNU make commandline options。
如果你想调试一个makefile,你可能会这样做
使用GNU Make的--debug
选项可以更好地记录在同一个地方。