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

问题描述 投票:0回答:1

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

由于MS lib.exe(我必须使用)的奇怪性,我需要这种差异化。

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

第一次调用:lib.exe -out:lib.lib file.obj next call(s):lib.exe -out:lib.lib lib.lib file.obj

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

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

分别。

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

我希望这由GNU make处理,而不是将它委托给命令(aka shell)。

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

gnu-make
1个回答
0
投票

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

lib.lib: file.obj
        lib.exe -out:$@ $(if $(wildcard $@),$@) $^
© www.soinside.com 2019 - 2024. All rights reserved.