【问题标题】:GNU make kind-of-double colonGNU 制作双冒号
【发布时间】:2012-01-10 10:10:58
【问题描述】:

我在理解以下 gmake 语法时遇到了一点问题:

OBJ = foo.o bar.o

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

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

我认为它可能会将“%.o: %.cpp”转换为正确的 %.cpp 依赖项 - 是吗? Google 在这里帮不上什么忙——它只找到通常的双冒号 (target::),这是不同的!

有什么建议吗?谢谢!

【问题讨论】:

  • 这是在互联网上广泛记录的。您进行了哪些研究?
  • 可能是错的——不知道它叫“静态模式规则”
  • @LightnessRacesinOrbit:很难在 Google 上搜索语法模式。确实,做到这一点的唯一方法(从第一原则出发)是搜索文档,直到发现模式。
  • 哈哈……名字对了……甚至在我的梅克伦堡书里……我只是没找到……抱歉打扰你了!
  • @LightnessRacesinOrbit: mhm...我上周阅读了 make 文档(O'reilly 的书、示例、更复杂的文件...),以更深入地了解这些东西是如何工作的以及如何解决问题的这个问题......在某些时候它应该被允许只问一个问题 - 虽然我知道你有多少时间回答这样的愚蠢问题......它有很大帮助!跨度>

标签: c++ makefile gnu


【解决方案1】:

这是static pattern rule

$(OBJ) 是目标列表。 %.o : %.cpp 的意思是“对于列表中与 %.o 匹配的每个目标,它依赖于 %.cpp”(其中 % 被相应地替换)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 2019-09-14
    • 2013-11-22
    • 2018-04-04
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    相关资源
    最近更新 更多