GNU制作双重冒号

时间:2012-01-10 10:10:59

标签: c++ makefile gnu

我在理解gmake语法后遇到了一些问题:

OBJ = foo.o bar.o

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

我不确定$(...):%。o:%。cpp会做什么!?

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

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:6)

这是static pattern rule

$(OBJ)是一系列目标。 %.o : %.cpp表示“对于列表中与%.o匹配的每个目标,它取决于%.cpp”(相应地替换%)。