2015-07-13 71 views
2

所以我知道如何从命令行创建变量和存储值。命令行参数使文件

但通常情况下,我会键入我的命令是这样的:使运行VAR =“ABC”,和VAR将被赋予新的价值“ABC”

但是,如果我想要做这样的事情VAR = “abc”make run,我怎样才能改变我的make文件?现在,如果我运行它,VAR在make文件中创建时仍具有初始值。

这是我的make文件:

VAR = "" 

.PHONY : build run 

build : program.c 
    gcc -o prog -g program.c 

run : build 
    ./prog $(VAR) 

回答

2

当你写VAR = "",你覆盖的任何值VAR可能有(例如,从环境,或在命令行)。您可以使用有条件分配,而不是,它看起来像这样:

VAR ?= "" 

这台VAR只有在没有设置它了。它等同于例如

ifeq ($(origin VAR), undefined) 
    VAR = "" 
endif 
+0

该补充手册链路讨论'='(并给出等效代码)在[变量的两种口味](HTTP://www.gnu。组织/软件/制作/手动/ make.html#口味)。 –

+0

另外,只是为了记录中的'VAR =“”'而不是将'VAR'设置为空字符串,它将其设置为值''“''。与空字符串相比,它本身没有什么用处,因此实际上没有任何有用的用途,应该完全放弃。 –

0
VAR = ${VAR} 

如果我记得右