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:$ @ $ @ $ ^
答案 0 :(得分:0)
没有内置方法可以执行,但是您可以编写规则来执行此操作:
lib.lib: file.obj
lib.exe -out:$@ $(if $(wildcard $@),$@) $^