GNU make:检测目标创建与更新

时间:2018-09-04 18:25:12

标签: gnu-make

GNU make中是否有一种方法可以检测是否需要分别创建目标。更新了吗?

由于需要使用MS lib.exe(我必须使用它),所以我需要进行这种区分。

类似UN * X的工具支持创建或更新“ lib.a”的“ ar cr lib.a file.o”。不幸的是,MS lib.exe需要这样做:

  

第一次调用:lib.exe -out:lib.lib file.obj
      下一个通话:   lib.exe -out:lib.lib lib.lib file.obj

所以我有2个不同的命令,目标和依赖项是相同的...

  

lib.lib:file.obj lib.exe -out:$ @ $ ^ <-如果lib.lib不存在

     

resp。

     

lib.exe -out:$ @ $ @ $ ^ <-如果lib.lib存在

我希望这可以由GNU make处理,而不是将其委托给命令(也称为shell)。

注意:双冒号规则实际上无济于事,因为问题是隐式规则中隐藏的 (%.obj):%。obj   $(AR)$(ARFLAGS)-out:$ @ $ @ $ ^

1 个答案:

答案 0 :(得分:0)

没有内置方法可以执行,但是您可以编写规则来执行此操作:

lib.lib: file.obj
        lib.exe -out:$@ $(if $(wildcard $@),$@) $^