Какие значения допустимы для переменной среды MAKE_MODE при использовании GNU make? - PullRequest
0 голосов
/ 02 декабря 2011

У меня обычно есть настройка среды для MAKE_MODE (Windows XP, использующая GNU make, как в Cygwin, так и в native)

set MAKE_MODE=UNIX

Теперь я обнаружил различия между моим сервером сборки (для которого не определен MAKE_MODE) иместная сборка.Это может быть что-то совершенно иное, но меня удивило, какие еще значения я могу указать для MAKE_MODE.

Я думаю, я знаю, что MAKE_MODE=UNIX предполагает, что GNU make использует /bin/sh - еслион находит его - но я быстро проверил руководство по сборке GNU и не смог найти описание.Поиск в Google сказал мне только то, что я уже знаю, но не дает действительной альтернативы.

Является ли единственная альтернатива, не определяющая переменную?Имеет ли это влияние при использовании CMD.exe и собственной версии GNU make?

РЕДАКТИРОВАТЬ: до сих пор я нашел ссылки на значения 'unix', 'win32', 'null' и undefined,но без объяснений и спецификаций.Но взгляд на исходный код GNU make 3.82 показывает, что строка «MAKE_MODE» не встречается ни разу, поэтому сам GNUmake, по-видимому, не меняет своего поведения, если эта переменная среды установлена ​​или нет.

EDIT2:Я проверил исходный код для GNU make для MinGW и снова ничего не нашел.Может быть, это специфично для CygWin?

EDIT3: я обнаружил ссылку , что это может быть свойством старой версии GNU make, поэтому я проверил версию 3.75.Не повезло, строка MAKE_MODE вообще не появляется в исходном коде.Следующим шагом действительно должна стать версия Cygwin GNU make.Я знаю 10 лет назад, что порт Cygwin в те дни не был интегрирован в обычное дерево исходников.

1 Ответ

0 голосов
/ 12 декабря 2011

На сайте Cygwin я обнаружил древнюю запись в списке рассылки , объясняющую основные операционные эффекты MAKE_MODE. Это определенно указывает на то, что переменная связана с реализацией Cygwin GNU make.

Я покопаюсь в исходном коде и добавлю к этому ответу, когда найду более подробную информацию.

ОБНОВЛЕНИЕ: В более поздней публикации , написанной сопровождающим Кристофером Фейлором, я обнаружил следующее обновление для GNU make version 3.81:

Обратите внимание, что параметр командной строки --win32 и среда "MAKE_MODE" переменная больше не поддерживается в марке Cygwin. Если вам нужно использовать Makefile, который содержит имена путей MS-DOS, тогда, пожалуйста, используйте MinGW версия make.

На самом деле я не нашел допустимых значений для MAKE_MODE, но он больше не нужен и не поддерживается в последних версиях GNU make для Cygwin, и он использовался для поддержки имен файлов DOS в make Cygwin.

И если вы действительно хотите узнать набор разрешенных значений, поищите в исходной версии версию Cygwin make до 3.81-1. Я думаю, единственное полезное значение было unix, все остальные будут означать то же самое.

Дело закрыто? Здесь все еще не так много просмотров ...

...