Как вы "эхо" последних конфигурационных /make -build -options в исходном каталоге?
Когда делает au GNU-стиль "./configure, make и install" - с определенными опциями, флагами и т.д. Как вы все знаете, иногда это может быть черное искусство. и то, что работает для одной части программного обеспечения, может не для других...
Теперь представьте, что вы успешно создали пакет XYZ.app с некоторыми опциями, например...
% ./configure --with-1=2 USFLAG="-3 four" OBSCURE_LIB=l/lib/doihave
и пошел вперед и использовал его. Отлично. В более поздний момент, , вы понимаете, что вам нужна ранее пропущенная опция компиляции или, возможно, вы решили проблему зависимости и т.д.. По какой-то причине вы хотите перекомпилировать этот совершенно хороший двоичный файл.
Теперь... как вы можете "напомнить" ВСЕ опции, которые вы передали, чтобы. /configure, verbatim, чтобы использовать эти ТОЛЬКО варианты, хотя возможно добавление или вычитание некоторых, на этот раз вокруг?
Я уверен, что этот материал похоронен где-то во всех файлах config.xxxx или AClocal или Makefile.xx, но для жизни меня я не смог ответить на один прямой ответ Google.
% file /usr/bin/$1 --> Mach-O 64-bit executable x86_64
% ld /usr/bin/$1 --> -macosx_version_min not specificed, assuming 10.6
% make -d --> * 20 pages of Makefile nonsense.... *
% ./config.log --> * shows some history, but nothing interesting. *
% ./config.status --> * does a strange sequence oddly similar to a "clean" *
% ./configure -h --> * 500 options, none of which is "show-me=your-shit" *
glibtoolize, otool, autoconf, automake, pkg-config... все, похоже, не хотят помочь.
Одним из близких вызовов является содержимое файла XYZ.pc, созданного pkg-config..
prefix=/usr/local \ exec_prefix=${prefix} \ libdir=${exec_prefix}/lib
includedir=${prefix}/include \ Libs: -L${libdir} -lxyz-base
Cflags: -I${includedir} -I${includedir}/xyz
Однако они просто выглядят как переменные окружения, а не аргументы из фактического вызова config...
Мне надоело гадать... каков реальный способ выяснить исходные аргументы построения, чтобы вы могли использовать их снова, по желанию...?
Ответы
Ответ 1
config.status
имеет в нем опции; ./config.status --recheck
повторно запускает configure
с исходными параметрами. Вы можете прервать это и переиздать команду (которую она покажет вам перед запуском), или вы можете отредактировать config.status
и добавить новые параметры в $ac_configure_extra_args
.
Я хочу, чтобы они облегчили это. Когда-то head config.status
предоставил вам оригинальную команду configure
. ./config.status --rerun extra args here
было бы хорошо.
Ответ 2
Невероятно, как-то все остальные пропустили канонический способ сделать это, что было вокруг с 2 лет до начала этой темы.
Я задавался вопросом то же самое, что и OP, и был разочарован отсутствием надлежащих (не уродливых) способов сделать это, когда я прочитал этот поток.
Несколько дней спустя, при просмотре заметок о выпуске Autoconf, я достиг примечаний к выпуску для Autoconf 2.65. И вы поверили бы этому?
Основные изменения в Autoconf 2.65 (2009-11-21) [стабильные]
[...]
config.status теперь предоставляет параметр -config для создания конфигурации.
Итак, просто запуск ./config.status --config
делает именно то, что запросил OP.
Вот ссылка в документации: 17 config.status invocation и цитата:
--config
Распечатайте параметры конфигурации многоразовым способом, указанным для оболочки, и выйдите из нее. Например, для сборки для отладки, которая в противном случае повторно использует конфигурацию из другого каталога build-dir пакета в src-dir, вы можете использовать следующее:
args=`build-dir/config.status --config`
eval src-dir/configure "$args" CFLAGS=-g --srcdir=src-dir
Ответ 3
Не могу поверить, что никто не упоминал config.log - он дает вам именно то, что вы ищете:
Этот файл содержит любые сообщения, созданные компиляторами, в то время как запустить configure, чтобы помочь отладке, если configure делает ошибку.
Он был создан configure, который был созданный GNU Autoconf 2.69. Командная строка вызова была
Ответ 4
Если у вас все еще есть дерево сборки, запустите ./config.status --recheck
, затем быстро нажмите CTRL-C
, когда он распечатает, что он будет запускать, перед повторным запуском configure
.