Command line 命令行参数生成文件
所以我知道如何从命令行创建变量和存储值 但通常情况下,我会这样键入命令:make run VAR=“abc”,VAR将被分配新值“abc” 但是,如果我想执行类似于VAR=“abc”make run的操作,如何更改make文件?现在,如果我运行这个,VAR在make文件中创建时仍然具有初始值 这是我的制作文件:Command line 命令行参数生成文件,command-line,makefile,command-line-arguments,Command Line,Makefile,Command Line Arguments,所以我知道如何从命令行创建变量和存储值 但通常情况下,我会这样键入命令:make run VAR=“abc”,VAR将被分配新值“abc” 但是,如果我想执行类似于VAR=“abc”make run的操作,如何更改make文件?现在,如果我运行这个,VAR在make文件中创建时仍然具有初始值 这是我的制作文件: VAR = "" .PHONY : build run build : program.c gcc -o prog -g program.c run : build .
VAR = ""
.PHONY : build run
build : program.c
gcc -o prog -g program.c
run : build
./prog $(VAR)
当您写入
VAR=”“
时,您正在覆盖VAR
可能具有的任何值(例如,来自环境或命令行)。您可以改为使用条件赋值,如下所示:
VAR ?= ""
仅当尚未设置时,才设置VAR
。这相当于
ifeq ($(origin VAR), undefined)
VAR = ""
endif
如果我没记错的话,make手动链接在中讨论了
?=
(并给出了相应的代码)。此外,make中的记录VAR=”“
并没有将VAR
设置为空字符串,而是将其设置为值“”
。严格来说,它没有空字符串有用,因此实际上没有任何有用的用途,应该完全删除。
VAR = ${VAR}