Передача переменных окружения в autoconf `./конфигурировать`


В чем разница между FOO=bar ./configure и ./configure FOO=bar, где ./configure - скрипт, генерируемый автоконф из configure.am? Я знаю, что первый устанавливает переменную окружения FOO в bar перед запуском скрипта ./configure, а второй передает строку FOO=bar в ./configure. Я думаю, что ./configure интерпретирует это (и помнит это?) как установить переменную FOO равной bar, но кроме этого, я не знаю. В частности, есть ли какие-то преимущества в том, чтобы делать это так или иначе?

1 6

1 ответ:

Передача присваивания configure в качестве аргумента гарантирует, что присваивание доступно в config.status, поэтому оно будет установлено в config.status --recheck. Это основное преимущество использования присваивания в качестве аргумента. Обратите внимание, что текущая документация autoconf рекомендует это перед передачей назначения через среду. Более старые версии autoconf не позволяли выполнять назначения в качестве аргументов для настройки, поэтому необходимо использовать более старую форму при запуске старых сценариев настройки и привычек умирать трудно, поэтому многие люди продолжают использовать окружающую среду. Тем не менее, это хорошая привычка передавать задания через аргументы.