Когда я думаю, что знаю, как работает оболочка, что-то приходит и ставит меня в тупик. Следующие команды были выполнены в GNU bash, версии 3.2.25.
У меня есть несколько ./configure
сценариев, которые все совместно используют группу общих параметров конфигурации, одним из которых является CFLAGS
.
Для этого у меня есть две переменные
CFLAGS="-fPIC -O3"
COMMON_CONFIGURE_OPTIONS="CFLAGS=\"$CFLAGS\" --enable-static --disable-shared --prefix=$PREFIX"
Когда это передается в `./configure ', это делается так:
"$FOO/configure" $COMMON_CONFIGURE_OPTIONS
Для жизни мне, кажется, я не могу заставить это расширяться правильно. Я попытался вручную подставить значение $CFLAGS
в $COMMON_CONFIGURE_OPTIONS
. Я пробовал каждую комбинацию одинарных и двойных кавычек под солнцем. Я даже пытался процитировать весь аргумент "CFLAGS = ...".
Версия, которую я дал выше, дает следующее (когда set -x
включено)
../configure 'CFLAGS="-fPIC' '-O3"' --enable-static --disable-shared --prefix=../install
configure: error: unrecognized option: `-O3"'
Try `../configure --help' for more information
То, что я ожидал и что я хочу, так это чтобы configure
вызывался как
./configure CFLAGS="-fPIC -O3" --enable-static --disable-shared --prefix="$PREFIX"
Как мне добиться того, чего я хочу, и, кроме того, есть хорошие ресурсы / советы о том, как избежать этой проблемы в будущем