【问题标题】:command line arguments make file命令行参数生成文件
【发布时间】:2015-07-13 00:28:26
【问题描述】:

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

但通常情况下,我会这样输入命令: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)

【问题讨论】:

    标签: command-line makefile command-line-arguments


    【解决方案1】:

    当您编写 VAR = "" 时,您将覆盖 VAR 可能拥有的任何值(例如,来自环境或命令行)。您可以改用条件赋值,如下所示:

    VAR ?= ""
    

    仅当尚未设置时才设置VAR。相当于例如

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

    【讨论】:

    • 制作手册链接在The Two Flavors of Variables 中讨论了?=(并给出了等效代码)。
    • 另外,为了记录 VAR = "" 在 make 中并没有将 VAR 设置为空字符串,而是将其设置为值 ""。严格来说,它比创建自己的空字符串更没用,因此实际上没有任何有用的目的,应该完全删除。
    【解决方案2】:
    VAR = ${VAR}
    

    如果我没记错的话

    【讨论】:

      猜你喜欢
      • 2012-02-12
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      相关资源
      最近更新 更多