【发布时间】:2019-02-28 19:51:16
【问题描述】:
我想将命令及其输出记录到日志文件中。这似乎很容易。只需将标准输出重定向到日志文件。
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”在配方中不那么明显了。注意“呼叫”,而不是“我的命令”。
如果 'mycommand' 类似于
$(CC) -o $@ -Wl,--linkeroption $<
在调用“log_and_run”时,逗号会将命令分成两个参数。
有没有人对此有解决方案,不会将注意力从命令上移开并适用于任意命令?
【问题讨论】:
-
鉴于您的所有要求,没有比您已经提出的更好的方法了。