Makefile - 仅在文件不存在时才创建依赖项

Dan*_*iel 17 dependencies makefile target file-exists

就像标题所说的那样,我想只在某个文件不存在的情况下才会产生依赖关系,而不是每次都更新时.

我有一个根目录(带有makefile的目录),在其中有一个名为"example"的子目录.在我的根目录中有四个.h文件(functions.h,parser.h,node.h和exception.h),如果那些.h文件还不存在,我想复制到"example"子目录在"例子"中.

不幸的是,我不能只是在"示例"中创建标准依赖项来检查头文件,因为每次我将头文件从root复制到"example"时,"example"中的头文件将被视为已更新并将触发该依赖项每次我跑的时候.我希望有一种方法可以让我的makefile将头文件从根目录复制到"example",只要它们在"example"中不存在.

Max*_*kin 27

这是仅限于订单的先决条件/依赖项:

但是,有时您可能希望对要调用的规则强制执行特定排序,而不强制在执行其中一个规则时更新目标.在这种情况下,您希望定义仅订单的先决条件.可以通过|在先决条件列表中放置管道符号()来指定仅订单的先决条件:管道符号左侧的任何先决条件都是正常的; 右边的任何先决条件都是仅限订单.

在你的情况下:

examples/%.h : | %.h
    cp $| $@
Run Code Online (Sandbox Code Playgroud)

另请参阅:仅限订单的先决条件未显示在$^或中$+.