【问题标题】:in makefile, create an empty file if file not exists在makefile中,如果文件不存在则创建一个空文件
【发布时间】:2018-09-24 10:55:41
【问题描述】:

在 makefile 中,我使用 awk 脚本进行一些文本操作

$(phony xyz):
   awk 'some script' file1 file2 > output;

在执行此操作时,如果缺少任何 file1 或 file2,则会出错。所以如果文件不存在,我正在考虑添加一个空文件。
如下所示

$(phony xyz):
   test -e file1 || echo "" > file1;
   test -e file2 || echo "" > file2;
   awk 'some script' file1 file2 > output;

但这不起作用。
Ex:如果 file1 不存在,则错误表示文件 file1 不存在,然后它正在创建一个空文件“file1”,而对于 file2 没有任何错误它只是清空文件,所以最后两个文件都变空了。

【问题讨论】:

  • 您确定您从 Makefile 中准确粘贴了这些行吗?它应该可以工作(但使用touch 可能更简单)。
  • @choroba:是的。这就是我正在使用的代码

标签: linux makefile


【解决方案1】:

为什么不将这些文件添加为先决条件,并在缺少它们时添加规则来构建它们?

$(phony xyz): file1 file2
   awk 'some script' file1 file2 > output;

file1 file2:
   touch $@

【讨论】:

  • 如果文件来自不同的目录$(phony xyz): dir1/file1 dir2/file2awk 'some script' dir1/file1 dir2/file2 > output;dir1/file1 dir2/file2:touch $@
  • @connectivitycable:欢迎使用 Stackoverflow。 “不工作”是一个非常有限的错误消息。 “不工作”是什么意思?顺便说一句,我可以建议您访问help centre 以更好地了解如何优化获得有用帮助的机会吗?
  • @Renaud - 您正在为Stack Overflow Close Vote Room (SOCVR) 招募。房间信息位于SOCVR FAQ。会议室专注于需要特别注意的问题,例如废话磁铁。这是一个人们工作效率高于排队的地方。我认为你会很合适。
猜你喜欢
  • 2016-06-18
  • 2012-04-08
  • 2011-01-19
  • 2014-01-02
  • 1970-01-01
  • 2012-05-10
  • 2013-09-18
相关资源
最近更新 更多