我想将命令及其输出记录到日志文件中。看起来很容易。只需将标准输出重定向到日志文件即可。
myrule:
mycommand >> logfile
但这仅记录命令的输出。不是命令本身。
我是否还回显该命令并将输出重定向到日志文件?
myrule:
@echo mycommand >> logile
mycommand >> logfile
“mycommand”的这种重复看起来不太好,而且它占用了配方中的空间。特别是如果食谱很长。
我应该创建一个函数并为我想要记录的每个命令调用它吗?
define log_and_run
@echo $(1) >> logfile
$(1) >> logfile
endef
myrule:
$(call log_and_run,mycommand)
现在我不必重复“mycommand”。但现在“mycommand”在配方中不太明显了。注意“call”,而不是“mycommand”。
如果“mycommand”类似于
$(CC) -o $@ -Wl,--linkeroption $<
调用“log_and_run”时,逗号会将命令拆分为两个参数。
有没有人有一个解决方案,不会将注意力从命令上移开并且适用于任意命令?