使用GNU make时,环境变量MAKE_MODE允许哪些值?

时间:2011-12-02 07:28:16

标签: windows-xp cygwin gnu-make

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

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:我检查了GNG make for MinGW的源代码,但一无所获。也许这是CygWin特有的?

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

1 个答案:

答案 0 :(得分:0)

我在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版本。

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

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

案件结案?这里的观点仍然不多......