如果文件不存在,如何避免Makefile失败?

詹斯

我在几个文件之间有一个依赖关系,其中一个是从另一个文件生成的。例如bar.txt,需要生成foo-temp.xml就需要生成最终foo.xml文件。在我的Makefile中,它表示如下:

foo-temp.xml: bar.txt
    do-magic -o foo-temp.xml bar.txt

foo.xml: foo-temp.xml
    do-more-magic -o foo.xml foo-temp.xml

只要所有文件都存在,一切都会顺利进行。但是在某些情况下,我是foo-temp.xml手动提供而不是从中生成它bar.txt实际上,bar.txt在这种情况下甚至都不存在。

如何在我的Makefile中表达这种“不存在”而不会因为bar.txt不存在而失败呢?

伊坦·赖斯纳

我不确定这是否是最好的方法,但是它是否可以工作(假设bar.txt本身不需要通过另一个目标创建)。

foo-temp.xml: $(wildcard bar.txt)

wildcard函数返回与模式匹配的文件列表,并删除不匹配的文件。这对于没有通配符/通配符的文件名也适用。

或者(更详细些)

foo-temp.xml: $(and $(realpath bar.txt),bar.txt)

相同的基本思想,但realpath返回“规范的绝对名称”,因此您不能直接使用其结果(除非在那里需要绝对路径),因此,我们使用以下事实:and函数短路仅在realpath返回非-时才生成输出。空值。

如果bar.txt需要自己生成,那么这些解决方案都不会起作用,因为bar.txt除非已经存在,否则这成为一个先决条件(尽管一旦完成,正常的制作过程就会起作用)。

如果是这种情况,那么您可以尝试使用make -o foo-temp.xml foo.xmlmake来确定它foo-temp.xml是无限老的,这应该使make尝试进行重新制作(并处理其先决条件)短路,并应让foo.xml: foo-temp.xml规则起作用(假设foo.xml不存在或早于该规则)。foo-temp.xml您手动创建的)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Makefile - 如果目录不存在则失败 - 跨平台

来自分类Dev

如果进程不存在,如何避免执行命令

来自分类Dev

如果文件不存在,则使TestNG通过测试失败

来自分类Dev

列出不存在的文件时如何避免错误?

来自分类Dev

如果文件不存在,如何从导入中跳过文件?

来自分类Dev

如果文件不存在,如何创建空文件

来自分类Dev

如果文件不存在,如何使outputstream生成文件?

来自分类Dev

如果文件不存在,如何让 Ansible 下载文件

来自分类Dev

如果列表中的文件不存在,则循环失败;否则,循环失败。如何处理这个错误

来自分类Dev

如何在获取排他锁以避免种族的同时打开(如果不存在则创建)文件

来自分类Dev

如果图像元素的源文件不存在,如何删除

来自分类Dev

如果图像元素的源文件不存在,如何删除

来自分类Dev

如果头文件不存在,如何编译?

来自分类Dev

Perl Config :: IniFiles-如何创建“如果不存在” ini文件?WriteConfig方法因错误而失败

来自分类Dev

Ansible:复制文件(如果不存在)

来自分类Dev

如果文件不存在,则生成

来自分类Dev

.htaccess如果文件不存在?

来自分类Dev

如果文件不存在,则防止错误

来自分类Dev

如果文件不存在,是否可以创建和打开文件,否则失败?

来自分类Dev

如何检查Makefile中目录是否不存在?如果[!-d ...]始终返回true

来自分类Dev

如果目录不存在,如何创建?

来自分类Dev

如果不存在,如何安装xev

来自分类Dev

如果目标目录不存在,如何强制提取失败?

来自分类Dev

如果Switch语句中不存在xml节点,如何通过断言使groovy脚本失败

来自分类Dev

如果元素不存在,Selenium 如何不使测试失败(java)

来自分类Dev

如果不存在,则插入失败,并显示“不存在”语句的错误未知命令

来自分类Dev

NodeJS文件流 - 如果文件不存在,如何创建文件?

来自分类Dev

Linux-避免使用cat:如果文件不存在,则没有这样的文件或目录

来自分类Dev

当XML文件中不存在节点时,如何避免NullReferenceExceptions?

Related 相关文章

  1. 1

    Makefile - 如果目录不存在则失败 - 跨平台

  2. 2

    如果进程不存在,如何避免执行命令

  3. 3

    如果文件不存在,则使TestNG通过测试失败

  4. 4

    列出不存在的文件时如何避免错误?

  5. 5

    如果文件不存在,如何从导入中跳过文件?

  6. 6

    如果文件不存在,如何创建空文件

  7. 7

    如果文件不存在,如何使outputstream生成文件?

  8. 8

    如果文件不存在,如何让 Ansible 下载文件

  9. 9

    如果列表中的文件不存在,则循环失败;否则,循环失败。如何处理这个错误

  10. 10

    如何在获取排他锁以避免种族的同时打开(如果不存在则创建)文件

  11. 11

    如果图像元素的源文件不存在,如何删除

  12. 12

    如果图像元素的源文件不存在,如何删除

  13. 13

    如果头文件不存在,如何编译?

  14. 14

    Perl Config :: IniFiles-如何创建“如果不存在” ini文件?WriteConfig方法因错误而失败

  15. 15

    Ansible:复制文件(如果不存在)

  16. 16

    如果文件不存在,则生成

  17. 17

    .htaccess如果文件不存在?

  18. 18

    如果文件不存在,则防止错误

  19. 19

    如果文件不存在,是否可以创建和打开文件,否则失败?

  20. 20

    如何检查Makefile中目录是否不存在?如果[!-d ...]始终返回true

  21. 21

    如果目录不存在,如何创建?

  22. 22

    如果不存在,如何安装xev

  23. 23

    如果目标目录不存在,如何强制提取失败?

  24. 24

    如果Switch语句中不存在xml节点,如何通过断言使groovy脚本失败

  25. 25

    如果元素不存在,Selenium 如何不使测试失败(java)

  26. 26

    如果不存在,则插入失败,并显示“不存在”语句的错误未知命令

  27. 27

    NodeJS文件流 - 如果文件不存在,如何创建文件?

  28. 28

    Linux-避免使用cat:如果文件不存在,则没有这样的文件或目录

  29. 29

    当XML文件中不存在节点时,如何避免NullReferenceExceptions?

热门标签

归档