我们当前的系统为每个项目都有一个Makefile,它只定义变量并包含一个包含所有规则的公共(Make.def)。
我试图更改常见的Makefile(Make.def)并添加覆盖某些规则的可能性:
我的想法是将Makefiles包含在从最常见到具体的部分中:
-include ./make.rules.rpm
-include ./make.rules.rpm.$(TARGET_ARCH)
-include ./make.rules.rpm.$(TARGET_ARCH).$(PROJECT_NAME)
当我使用这种方法时,我实现了我的目标,但发出了Makefile的警告:
make.rules.rpm。
x86:2: warning: overriding commands for target `rpm'
make.rules.rpm:9: warning: ignoring old commands for target `rpm'
到目前为止,我已经阅读过它无法抑制此警告,也无法取消现有规则。
所以我尝试下一个方法:
ifeq ($(shell test -e ./make.rules.rpm.$(TARGET_ARCH) && echo -n yes),yes)
include ./make.rules.rpm.$(TARGET_ARCH)
else
include ./make.rules.rpm
endif
我只包括一个,更具体。这意味着我必须编写所有规则:
在这个例子中,make.rules.rpm必须遵守规则:
spec:
(...)
rpm:
(...)
也许我只需要覆盖规范规则,但保持与原始规则相同的rpm规则。
所以,这是我的问题:如何使用外部Makefile覆盖Makefile上已经定义的规则而不保留原始的重新定义规则?