makefile目标依赖项依赖于目标名称

时间:2017-06-07 14:48:54

标签: makefile gnu-make

我有以下规则:

SPECIAL = file1 file2

%.o : %.cpp a.h
    $(CC) -c $(CFLAGS) $< -o $@

我希望如果%位于$(SPECIAL),那么b.h会被添加到依赖项列表中。

有没有办法做到这一点,而不重复规则?

1 个答案:

答案 0 :(得分:3)

您可以单独分配其他依赖项。只需在最后添加一行:

$(addsuffix .o,${SPECIAL}): b.h

要不必处理依赖顺序,请将规则中的$<替换为$(filter %.cpp,$^)。这种方式%.cpp不一定是第一个依赖。

理想情况下,您希望自动生成标头依赖项,以避免手动指定它们。

最简单的自动依赖关系生成:

%.o : %.cpp 
    $(CXX) -c -o $@ -MD -MP $(CXXFLAGS) $(filter %.cpp,$^)

ifneq ($(MAKECMDGOALS),clean)
-include $(wildcard *.d)
endif