Как вы «повторяете» последние настройки / make build --options в исходном каталоге? - PullRequest
17 голосов
/ 11 мая 2011

Когда делает в стиле GNU ". / Configure, создайте и установите " - с определенными параметрами, флагами и т. Д. Как вы все знаете, иногда это можетбыть черным искусством ... и то, что работает для одного программного обеспечения, может не работать для любого другого ...

Теперь представьте, что вы успешно создали какой-то пакет XYZ.app с некоторыми вариантами , как ...

% ./configure --with-1=2 USFLAG="-3 four" OBSCURE_LIB=l/lib/doihave

и пошел дальше и использовал его.Отлично.Позже, вы поймете, что вам нужна ранее пропущенная опция компиляции, или, возможно, вы решили проблему с зависимостями и т. Д. * По какой-то причине вы хотите перекомпилировать этот совершенно хороший двоичный файл.

Теперь ... как вы можете "вспомнить" ВСЕ параметры, которые вы передали в ./configure, дословно, чтобы использовать те же параметры, при возможности добавляя или вычитая некоторые,на этот раз?

Я уверен, что этот материал похоронен где-то во всех этих файлах 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 ... все, похоже, не хотят помогать.Кажется, что одним из вызовов close является содержимое файла 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

Однако они просто кажутся переменными среды, а не аргументами фактического вызова конфигурации ... Мне надоело гадать ... каков реальный способ выяснить исходные аргументы сборки, чтобы вы могли использовать их снова, по своему желанию ...?

Ответы [ 4 ]

13 голосов
/ 11 мая 2011

config.status имеет опции в нем;./config.status --recheck повторно запускает configure с исходными параметрами.Вы можете прервать это и повторить команду (которую она покажет вам перед запуском), или вы можете отредактировать config.status и добавить свои новые параметры в $ac_configure_extra_args.

Я бы хотел, чтобы они сделалиэто проще сделать.Давным-давно head config.status получит вам оригинальную команду configure../config.status --rerun extra args here было бы неплохо.

12 голосов
/ 26 октября 2016

Невероятно, но почему-то все остальные упустили канонический способ сделать это, который существует примерно за 2 года до начала этой темы.

Я удивлялся тому же, что и ОП, и был разочарован отсутствием надлежащих (некрасивых) способов сделать это, когда я читал эту ветку.

Несколько дней спустя, когда я бездельничал, просматривая заметки о выпуске Autoconf, я достиг заметок о выпуске Autoconf 2.65 . И поверите ли вы этому?

Основные изменения в Autoconf 2.65 (2009-11-21) [стабильный]

[...]

config.status теперь предоставляет параметр --config для создания конфигурации.

Итак, просто запуск ./config.status --config делает именно то, о чем просил ОП.

Вот соответствующая ссылка в документации: 17 вызов config.status и цитата:

--config

Распечатайте параметры конфигурации повторно, указав для оболочки, и выйдите. Например, для отладочной сборки, которая в противном случае использует конфигурацию из другого каталога сборки build-dir пакета в src-dir , вы можете использовать следующее:

args=`build-dir/config.status --config`
eval src-dir/configure "$args" CFLAGS=-g --srcdir=src-dir
4 голосов
/ 04 апреля 2014

Не могу поверить, что никто не упомянул config.log - он даст вам именно то, что вы ищете:

Этот файл содержит любые сообщения, созданные компиляторами во время запуск configure, чтобы помочь отладке, если configure допустил ошибку.

Он был создан с помощью configure, который был сгенерированный GNU Autoconf 2.69. Командная строка вызова была

$ ./configure --prefix / usr / local / syslog-ng / --enable-linux-caps --enable-поддельный источник

2 голосов
/ 11 мая 2011

Если у вас все еще есть дерево сборки, запустите ./config.status --recheck, затем быстро нажмите CTRL-C, чтобы распечатать то, что он будет запускать перед повторным запуском configure.

...