我有以下规则:
SPECIAL = file1 file2
%.o : %.cpp a.h
$(CC) -c $(CFLAGS) $< -o $@
我希望如果%
位于$(SPECIAL)
,那么b.h
会被添加到依赖项列表中。
有没有办法做到这一点,而不重复规则?
答案 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