GNU制作双重冒号

081*_*ZED 4 c++ gnu makefile

我对gmake语法的理解有点问题:

OBJ = foo.o bar.o

$(OBJ): %.o: %.cpp
    $(CC) -c -MMD -MP $(INCLUDES) $(CFLAGS) $< -o $@
    @sed (...create empty targets in file...)
Run Code Online (Sandbox Code Playgroud)

我不确定是什么$(...):%.o:%.cpp呢!?

我认为它可能会在正确的%.cpp依赖项中翻译"%.o:%.cpp" - 是吗?谷歌在这里没有多大帮助 - 它只找到通常的双冒号(目标::)这是不同的东西!

有什么建议?谢谢!

Oli*_*rth 6

这是一个静态模式规则.

$(OBJ)是一个目标列表.的%.o : %.cpp意思是"在匹配列表中的每个对象%.o,它是依赖于%.cpp"(其中所述%相应取代的).