【问题标题】:What is ?= in MakefileMakefile 中的 ?= 是什么
【发布时间】:2014-09-06 18:36:22
【问题描述】:
KDIR ?= $(shell uname -r)

?=是什么意思?

我从 Stack Overflow 的另一个线程中了解了 :=+== 之间的区别,但无法找到 ?= 的解释。

【问题讨论】:

    标签: linux linux-kernel makefile


    【解决方案1】:

    ?= 表示仅在 KDIR 变量未设置/没有值时设置它。

    例如:

    KDIR ?= "foo"
    KDIR ?= "bar"
    
    test:
        echo $(KDIR)
    

    将打印“foo”

    GNU 手册:http://www.gnu.org/software/make/manual/html_node/Setting.html

    【讨论】:

    • 是不是表示系统某处已经声明了KDIR?
    • 不必如此,因为?= 可用于将默认/备用值应用于变量,它可能允许在环境中设置KDIR。跨度>
    • @Simon 请注意,make 的命令行参数已经覆盖了 Makefile 变量,而不需要 ?=
    【解决方案2】:

    感谢 Simon 和 R.T.感谢他们快速正确的反应。

    另外,我找到了详细解释所有内容的 GNU 手册: http://www.gnu.org/software/make/manual/html_node/Setting.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-27
      • 2016-12-23
      • 2018-03-15
      • 2011-01-09
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      • 2016-07-30
      相关资源
      最近更新 更多