当做一个GNU风格的“ ./ configure,make,and install ” - 带有特定的选项,标志等......众所周知,有时候这可能是一种黑色艺术......对一件软件起作用的东西可能不适合任何其他......
现在,想象一下您已经成功构建了一些包 XYZ.app 并带有一些选项,如...
% ./configure --with-1=2 USFLAG="-3 four" OBSCURE_LIB=l/lib/doihave
然后继续使用它。大。稍后,您意识到您需要先前省略的编译时选项,或者您已经解决了依赖性问题等... 无论出于何种原因,您希望重新编译这个完美的二进制文件
现在...... 你怎么能“回忆”你传递的所有选项到./configure,逐字,以便使用那些SAME选项,同时可能增加或减少一些,这次围绕?
我确信这些东西都埋藏在所有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-call似乎是由pkg-config ..
创建的XYZ.pc文件的内容prefix=/usr/local \ exec_prefix=${prefix} \ libdir=${exec_prefix}/lib
includedir=${prefix}/include \ Libs: -L${libdir} -lxyz-base
Cflags: -I${includedir} -I${includedir}/xyz
然而,这些看似环境变量,而不是来自实际配置调用的参数...... 我厌倦了猜测...找出原始构建参数的真正方法是什么,以便您可以随意使用它们??
答案 0 :(得分:13)
config.status
有选项; ./config.status --recheck
使用原始选项重新运行configure
。您可以中断该命令并重新发出该命令(在运行之前它将显示该命令),或者您可以编辑config.status
并将新参数添加到$ac_configure_extra_args
。
我有点希望他们能够更容易地做到这一点。曾几何时head config.status
可以获得原始的configure
命令。 ./config.status --rerun extra args here
会很好。
答案 1 :(得分:12)
令人难以置信的是,其他所有人都错过了这样做的规范方式,这种方式自该线程开始之前已经存在了2年。
我想知道与OP相同的事情,并且当我读到这个帖子时缺乏适当的(非丑陋)方法而感到失望。
几天后,在闲置浏览Autoconf的发行说明时,我达到the release notes for Autoconf 2.65。你会相信吗?
Autoconf 2.65(2009-11-21)[稳定]
的主要变化[...]
config.status现在提供了一个--config选项来生成配置。
因此,只需运行./config.status --config
就可以完成OP所要求的目标。
以下是文档中的相应参考:17 config.status invocation和引用:
--config
以可重复使用的方式打印配置设置,为shell引用,然后退出。例如,对于调试版本,否则将重用 src-dir 中包的其他构建目录 build-dir 中的配置,您可以使用以下内容:
args=`build-dir/config.status --config` eval src-dir/configure "$args" CFLAGS=-g --srcdir=src-dir
答案 2 :(得分:4)
我无法相信没人提到config.log - 它可以为您提供您正在寻找的内容:
此文件包含编译器生成的任何消息 运行configure,以便在configure出错时帮助调试。
它是由configure创建的,它是 由GNU Autoconf 2.69生成。调用命令行是
$ ./configure --prefix / usr / local / syslog-ng / --enable-linux-caps --enable-spoof-source
答案 3 :(得分:2)
如果您仍然拥有构建树,请运行./config.status --recheck
,然后快速按CTRL-C
,因为它会在重新运行configure
之前打印出它将运行的内容。