【问题标题】:Which values are allowed for environment variable MAKE_MODE when using GNU make?使用 GNU make 时,环境变量 MAKE_MODE 允许哪些值?
【发布时间】:2011-12-02 07:28:16
【问题描述】:

我通常有一个 MAKE_MODE 的环境设置(Windows XP,使用 GNU make,在 Cygwin 和本机下)

set MAKE_MODE=UNIX

我现在发现我的构建服务器(未定义 MAKE_MODE)和本地构建之间存在差异。这可能是完全不同的东西,但它让我想知道我可以为 MAKE_MODE 指定哪些其他值。

我想我知道 MAKE_MODE=UNIX 应该告诉 GNU make 使用 /bin/sh - 如果它找到了 - ,但我很快检查了 GNU make 手册并找不到描述。谷歌搜索只告诉我我已经知道的,但没有给出有效的替代方案。

是不定义变量的唯一选择吗?使用 CMD.exe 和原生版本的 GNU make 有影响吗?

编辑:到目前为止,我已经找到了值 'unix'、'win32'、'null' 和 undefined 的引用,但没有解释,也没有规范。但是看一下 GNU make 3.82 的源代码会发现没有一次出现字符串“MAKE_MODE”,因此 GNUmake 本身显然不会在设置或不设置此环境变量时改变其行为。

EDIT2:我检查了 MinGW 的 GNU make 的源代码,但又一无所获。也许是 CygWin 特有的?

EDIT3:我发现了一个reference,它可能是旧版 GNU make 的属性,所以我检查了 3.75 版。不走运,字符串 MAKE_MODE 根本没有出现在源代码中。下一步真的必须是 GNU make 的 Cygwin 版本。我从 10 年前就知道,当时的 Cygwin 端口并没有集成到常规的源代码树中。

【问题讨论】:

  • 您能否详细说明您在构建服务器和本地构建之间看到的差异的本质?是不是有些文件没有建好?
  • @MaximYegorushkin 构建服务器问题有不同的原因,与此处提出的问题无关。这是我检查过的一个问题,但我已经解决了这个问题。然而,问题仍然存在,因为我过去无数次使用了 env 变量,但并没有真正知道它到底做了什么/做了什么,参见。我的回答如下。

标签: windows-xp cygwin gnu-make


【解决方案1】:

我在Cygwin网站上找到了一个ancient mailing list entry,解释了MAKE_MODE的基本运行效果。这绝对表明该变量与 GNU make 的 Cygwin 实现有关。

我将在源代码中进行挖掘,并在找到更多详细信息时添加到此答案中。

更新:在维护者 Christopher Faylor 的 more recent post 中,我发现了 GNU make 版本 3.81 的以下更新:

注意 --win32 命令行选项和“MAKE_MODE”环境 Cygwin 的 make 不再支持变量。如果您需要使用 包含 MS-DOS 路径名的 Makefile,请使用 MinGW 版本。

我还没有真正找到 MAKE_MODE 允许的值,但在 Cygwin 的 GNU make 的最新版本中不再需要或支持它,它用于支持 Cygwin 的 make 中的 DOS 文件名。

如果您真的想知道允许值的集合,请查看 Cygwin 3.81-1 之前的 make 版本的源代码。我猜唯一有用的值是unix,其他所有值都一样。

结案?这里的浏览量还是不多...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2017-12-26
    • 1970-01-01
    • 2015-11-14
    相关资源
    最近更新 更多