启动make命令时覆盖变量的最佳方法是什么?

  1. make PREFIX="/new_path"
  2. PREFIX="/new_path" make

我怀疑这是不完全相同的,因为在第一种情况下,重写被指定为make命令的参数 ,而在第二种情况下(如果我猜很好),我们使用shell定义来设置变量,然后调用命令make

#1楼 票数:1 已采纳

正如您所说,这取决于您所说的“最佳”。 两者都适合于不同情况。

默认情况下,makefile变量分配优先于环境变量设置,并且命令行参数会覆盖makefile变量分配。

因此,如果要确保使用给定的设置,则应始终使用命令行: make PREFIX="new/path" 如果要为Makefile提供默认值以供使用(如果该文件没有值),则应使用环境。

  ask by prodev_paris translate from so

未解决问题?本站智能推荐:

2回复

从外部覆盖make的命令

我有几个带文件stamp1.txt和stamp0.txt的目录,我想覆盖cat命令。 例如,我需要它来禁止将“ stamp1”文件存档到库中。 因此,我编写了一个名为“ realname”和bash脚本的过滤程序,以覆盖原始的cat命令。 所以命令: 将转换为 这个例子很好用
3回复

Make:覆盖一个标志

我对快速覆盖-Werror标志的反应有点困惑? 所以我在这里问我的具体问题。 我有多个Makefile一起工作,CFLAGS已经设置为(-Werror -Wall ..和许多其他人) 但是在其中一个Makefile中,我希望错误不被视为警告,所以我想删除-Werror标志。 实现
2回复

在VisualStudio中覆盖环境变量?

我正在使用Visual Studio Express 2013并尝试编译其他人的代码。 该文档告诉我在命令行中设置环境变量QTDIR,然后从该终端启动VS。 但是编译器仍然认为QTDIR是原来的样子,而不是我在命令行中指定的样子。 我试图重新启动计算机,然后再做一次,但是结果没有改变。
1回复

Docker撰写覆盖主机变量

我的Docker安装程序在奇怪的情况下运行 目录结构 .env docker-compose.yml 当我运行容器时,它说用户名和密码不正确,显然,用户名或密码是错误的。 当我检查 问题 : 我的主机用户是默认情况下从docker获取的主机用户吗,有什么方法可以在do
2回复

如何覆盖默认的Grails环境?

Grails允许您在Config.groovy为您的应用定义不同的“环境”,如下所示: 因此,您可以像这样运行您的应用: ...并且Grails将以“演示”环境模式运行您的应用程序。 默认是development ,所以如果你只是执行: ......它和以下一样: 但是,我想知
2回复

在make文件中拆分变量

我有一个变量让我说x = tpm / tpm 在一个makefile中,我希望能够将x分成两半。 在bash中,这将是$ {x%/ }和$ {x# /} 但我如何在makefile中执行此操作? 提前致谢。
1回复

make工具中的变量声明

让我们有一个简单的make-file : 那么,变量CC , FLAG和TARGET是否将添加到make工具的环境变量数组中,或者该变量不依赖make的变量环境?
1回复

运行make之后,能否访问make设置的变量?

我有一个Makefile可以在运行时设置一些变量,例如foo = bar 。 运行make时,我想访问这些变量。 不幸的是echo $foo返回任何内容。 有没有办法将变量从make导出回环境?