在makefile中打印时间戳

时间:2016-06-09 09:53:35

标签: makefile gnu-make

我想测量make文件中每个构建项目的时间,我只是在下面尝试,为什么它不起作用?

mytest:
    $(info 'Now time is $(date --iso=seconds)')

日期不打印,只打印

'Now time is '
。什么可能是错的?

def get_permission_object(permission_str): app_label, codename = permission_str.split('.') return Permission.objects.filter(content_type__app_label=app_label, codename=codename).first() def get_users_with_permission(permission_str, include_su=True): permission_obj = get_permission_object(permission_str) q = Q(groups__permissions=permission_obj) | Q(user_permissions=permission_obj) if include_su: q |= Q(is_superuser=True) return User.objects.filter(q).distinct()

1 个答案:

答案 0 :(得分:5)

没有名为make的{​​{1}}函数。如果要调用shell命令,则语法为date

在食谱中使用$(shell date)并不是特别优雅;该函数不会产生任何对传递给shell有用的东西。您可能只是寻找

$(info)

(无法找到mytest: date +"Now time is +%FT%T%z" 正确记录;从此博客获取定义:http://nixscripts.blogspot.com/2010/07/hidden-arguments-easter-egg-or-what.html

......或者可能效率不高

--iso-seconds

其中双美元符号从Make中转义美元符号,以便您将命令替换传递给shell。

只是指出显而易见的,很遗憾Make使用的语法与shell的命令替换语法非常相似。在Make内部,您使用mytest: printf 'Now time is %s\n' "$$(date --iso-seconds)" $(shell command)$$(command)传递给shell。前者在纯Make片段中有意义(command中的变量定义等);后者仅适用于食谱。