【问题标题】:in a makefile, declaring a phony target as a wildcard在 makefile 中,将虚假目标声明为通配符
【发布时间】:2012-06-20 11:05:37
【问题描述】:

我想将我的通配符目标声明为假,但假不支持通配符:

我的生成文件:

%.config:
        gcc <<compile>>

我希望用户能够使用我的 makefile 来编译项目,使用特定的配置文件:

make something.config
make something_else.config

显然,我需要我的目标是假的,因为目标文件存在,但只是写:

.PHONY: %.config

不起作用。 我看到here makeapp 支持另一种语法,这会有所帮助:

$(phony %.config): ...

但我只能使用 make,而不能使用 makeapp。

make 有什么办法吗?

【问题讨论】:

  • "我希望用户能够使用我的 makefile 来编译任何 .c 文件" 什么?这不是 make 的用途。
  • 这只是一个例子,展示我的问题。实际上,用户运行“make | 并且makefile 使用此配置编译代码
  • @user1340472:那么您能否更新您的问题以显示更准确地反映您正在尝试做什么的代码? make config_file 听起来不像 make source_file.c...

标签: linux makefile wildcard


【解决方案1】:

这些是相互矛盾的目标。虚假目标是与真实文件不对应的目标。在您的情况下,该文件存在,但它并不是真正的目标。

我建议不要使用配置文件的名称作为目标。相反,构建一个基于以下之一的系统:

make something_else
make CONFIG=something_else.config

【讨论】:

    猜你喜欢
    • 2021-06-02
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    相关资源
    最近更新 更多