GNU Make,来自多个前提行的`$ <`值

时间:2018-07-05 16:01:16

标签: variables makefile prerequisites

在这种情况下:

sample.o: sample.hpp
%.o: %.cpp
     $(CXX) -o $@ -c $<

sample.o: utility.hpp

编译sample.o时,第一个先决条件(值为$<)是什么? sample.hppsample.cpp? ... utility.hppsample.hpp是make找到的第一个先决条件。 sample.cpp是包含配方的规则的第一个必要条件,这是最有意义的。 utility.hpp用作第一个先决条件是没有道理的,但我认为这是为了完善。

如果怎么办?

sample.o: sample.hpp utility.hpp
# implicit rule %.o: %.cpp

如果怎么办?

%.o: %.cpp # Removal of implicit rule/recipe.
sample.o: sample.hpp
%.o: %.cpp %.d
     $(CXX) $(DEPFLAGS) -o $@ -c $<

这里的第一个前提条件可能是第一行的sample.cppsample.hpp,因为%.o: %.cpp%.o: %.cpp %.d覆盖,而sample.hpp是新的先决条件先决条件或再次sample.cpp,因为它是包含配方的规则的第一个前提条件。

如果怎么办?

sample.o: sample.hpp
%.o: %.cpp
sample.o: utility.hpp
%.o: %.cpp %.d
     $(CXX) $(DEPFLAGS) -o $@ -c $<

相同的参数,第四行可以是sample.hppsample.cpp

简而言之,GNU Make使用什么标准或算法填充$<

1 个答案:

答案 0 :(得分:0)

信息文件说(我的重点):

  

$<

     

第一个必备条件的名称。 目标物是否有配方    从隐式规则来看,这将是    隐式规则

这证实了您所说的“最有意义”的假设。