【问题标题】:make - specifying target name to make from command linemake - 指定从命令行生成的目标名称
【发布时间】:2010-01-20 21:17:27
【问题描述】:

我正在查看 C makefile,我有一个问题。

我知道'make a'会生成目标a,它应该在makefile中定义。

我想知道目标名称本身是否可以作为参数提供给 make。

即这就是我想做的:

$(target_name) 是提供给命令“make”的名称。例如,'make foo'。

在makefile中,
$(target_name) = 依赖项
命令

我不确定这是否可行...在制作手册中也找不到任何内容。

如果有人能帮我解决这个问题,那就太棒了。

谢谢,

【问题讨论】:

    标签: makefile


    【解决方案1】:

    您所询问的一切都是 make 默认执行的操作 - 无需在 makefile 中编写任何特殊代码来执行此操作。您似乎对 make 很困惑(例如,它与 C 无关)。最好的指南是GNU Make Manual,它不仅是一本手册,还是一个很好的教程。

    【讨论】:

    • 是的.. 例如这里它展示了如何在一个 makefile 中指定不同的目标gnu.org/software/make/manual/make.html#Rule-Introduction
    • 感谢您的回复。也许我不清楚。我的意思是,“目标名称未在 makefile 中预定义。”它由命令行提供并在 makefile 中使用。这可能吗?
    • @Chaitanya "make foo" 将构建名为 "foo" 的目标。你怎么能指望它构建一个未定义的目标?
    • 如果您使用隐式规则,则可以构建不在 makefile 中的目标,例如,如果您有 foo.c 并且没有运行 make foo 的 makefile 将工作并编译 foo。跨度>
    【解决方案2】:

    我对 Makefiles 有点陌生,但您似乎不会像这样在 Makefile 中传递值。如果以下是你的Makefile

    # Makefile
    
    TARGET?=something
    
    $(TARGET):
        echo $(TARGET)
    

    你可以在终端中像这样调用make来传递参数

    $ TARGET='ABCDEF' make
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-08
      • 2015-08-27
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多