makefile目标只需要执行一次

时间:2016-08-02 23:46:34

标签: makefile gnu-make

我想从目录中的a.txt生成a.tar.gz。我尝试在Makefile中编写以下目标:

a.txt: a.tar.gz
  tar xvf a.tar.gz

这是有效的,但在运行它之后a.tar.gz未压缩且不再存在。随后的make失败了。如何编写检查a.txt是否不存在的目标,如果是,则运行tar,否则不执行任何操作?

2 个答案:

答案 0 :(得分:0)

'test'或'['和']'可以做到这一点。

a.txt:
   if [ -e a.tar.gz ]; then \
   tar xvf a.tar.gz \
   fi

答案 1 :(得分:0)

$(document).ready(function () { var observer = new MutationObserver(function ( mutations ) { var elements = mutations.reduce(function ( elements, mutation ) { return elements.concat( mutation.addedNodes ); }, [] ); // .filter() makes sure you only manipulate mutated elements that match your selector resizeFonts( $( elements ).filter( ".selector" ) ); }); observer.observe( $(".parent-element")[ 0 ], { childList: true, subtree: true }); $( window ).resize(function () { resizeFonts( $( ".selector" ) ); }); }); function resizeFonts ( elements ) { elements.css( "font-size", amazingNewFontSize ); } 只有在找到至少一个文件时才会展开:

wildcard

添加a.txt: $(wildcard a.tar.gz) tar xvmf $< 标志将避免不必要的重制。

如果两个文件都不存在,规则将会失败,但不知道你究竟在做什么,并且很难提供全面的解决方案。

相关问题