我想测量生成文件中每个生成项目的时间,我只是在下面尝试,为什么它不起作用?在生成文件中打印时间戳
mytest: $(info 'Now time is $(date --iso=seconds)')
日期不打印,只打印
'Now time is '。什么可能是错误的?
make --version GNU Make 3.81
我想测量生成文件中每个生成项目的时间,我只是在下面尝试,为什么它不起作用?在生成文件中打印时间戳
mytest: $(info 'Now time is $(date --iso=seconds)')
日期不打印,只打印
'Now time is '。什么可能是错误的?
make --version GNU Make 3.81
没有make
功能命名date
。如果你想调用一个shell命令,语法是$(shell date)
。
在配方中使用$(info)
不是特别优雅;该函数不会产生任何对传递给shell有用的内容。您可能正在寻找只是为了
mytest:
date +"Now time is +%FT%T%z"
(找不到--iso-seconds
记录是否正常;抓住从这个博客把定义:http://nixscripts.blogspot.com/2010/07/hidden-arguments-easter-egg-or-what.html)
...或许不那么有效
mytest:
printf 'Now time is %s\n' "$$(date --iso-seconds)"
哪里双美元符号从Make中跳出美元符号,以便您通过shell的命令替换。
仅仅指出显而易见的是,Make使用的语法与shell的命令替换语法非常相似,这是不幸的。在Make中,使用$(shell command)
或$$(command)
将command
传递给shell。前者在纯制作片段(Makefile
适当的变量定义等)中是有意义的;后者只在食谱中可用。
还有'!='用于分配shell命令返回的值。 – user657267
@ user657267谢谢,我对此并不熟悉。文档例如在https://www.gnu.org/software/make/manual/make.html#index-_0021_003d,但在我的快速实验中,它似乎不适用于OSX上的'make' 3.81;在Linux上,使用'make' 4.0,它确实对我有用。 – tripleee
是的,它是在4.0中添加的。 – user657267
发现注释不能嵌入代码,我会问另一个问题 – user792883