Передача переменных окружения в autoconf `./конфигурировать`
В чем разница между FOO=bar ./configure
и ./configure FOO=bar
, где ./configure
- скрипт, генерируемый автоконф из configure.am
? Я знаю, что первый устанавливает переменную окружения FOO
в bar
перед запуском скрипта ./configure
, а второй передает строку FOO=bar
в ./configure
. Я думаю, что ./configure
интерпретирует это (и помнит это?) как установить переменную FOO
равной bar
, но кроме этого, я не знаю. В частности, есть ли какие-то преимущества в том, чтобы делать это так или иначе?
1 ответ:
Передача присваивания
configure
в качестве аргумента гарантирует, что присваивание доступно вconfig.status
, поэтому оно будет установлено вconfig.status --recheck
. Это основное преимущество использования присваивания в качестве аргумента. Обратите внимание, что текущая документация autoconf рекомендует это перед передачей назначения через среду. Более старые версии autoconf не позволяли выполнять назначения в качестве аргументов для настройки, поэтому необходимо использовать более старую форму при запуске старых сценариев настройки и привычек умирать трудно, поэтому многие люди продолжают использовать окружающую среду. Тем не менее, это хорошая привычка передавать задания через аргументы.