Command line 命令行参数生成文件

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 .

所以我知道如何从命令行创建变量和存储值

但通常情况下,我会这样键入命令: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
   ./prog $(VAR)

当您写入
VAR=”“
时,您正在覆盖
VAR
可能具有的任何值(例如,来自环境或命令行)。您可以改为使用条件赋值,如下所示:

VAR ?= ""
仅当尚未设置时,才设置
VAR
。这相当于

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

如果我没记错的话,make手动链接在中讨论了
?=
(并给出了相应的代码)。此外,make中的记录
VAR=”“
并没有将
VAR
设置为空字符串,而是将其设置为值
“”
。严格来说,它没有空字符串有用,因此实际上没有任何有用的用途,应该完全删除。
VAR = ${VAR}