Ale*_*ray 18 autoconf gnu makefile autotools configure
当做AA GNU风格" 的./configure,make,并安装 " -与特定选项,标记,等...大家都知道,有时这可能是一个黑色的艺术..和什么工作的一个软件可不是为了任何其他......
现在,假设您已经成功构建了一些包XYZ.app,其中包含一些选项,如...
% ./configure --with-1=2 USFLAG="-3 four" OBSCURE_LIB=l/lib/doihave
继续使用它.大.稍后,您意识到您需要先前省略的编译时选项,或者您已经解决了依赖性问题等等...... 无论出于何种原因,您希望重新编译这个非常好的二进制文件.
现在...... 你怎么能"回忆"你传递给./configure的所有选项,逐字,以便使用那些SAME选项,同时可能增加或减少一些,这次呢?
我确信这些东西都埋在了所有那些config.xxxx或AClocal或Makefile.xx文件的某个地方,但对于我的生活,我还没有能够谷歌直接回答.
% 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" *
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
然而,这些似乎只是环境变量,而不是来自实际配置调用的参数...... 我厌倦了猜测......找出原始构建参数的真正方法是什么,以便您可以再次使用它们,将...?
und*_*e_d 14
令人难以置信的是,其他所有人都错过了规范的方式来做这件事,这个方法已经开始了2年之前.
我想知道与OP相同的事情,并且当我读到这个帖子时缺乏适当的(非丑陋的)方法令我感到失望.
几天后,在闲置浏览Autoconf 的发行说明时,我找到了Autoconf 2.65的发行说明.你会相信吗?
Autoconf 2.65的主要变化(2009-11-21)[稳定]
[...]
config.status现在提供了一个--config选项来生成配置.
因此,正好运行./config.status --config正是OP所要求的.
以下是文档中的相应参考:17 config.status调用和引用:
--config以可重复使用的方式打印配置设置,为shell引用,然后退出.例如,对于调试版本,否则将重用src-dir中包的不同构建目录build-dir中的配置,您可以使用以下命令:
Run Code Online (Sandbox Code Playgroud)args=`build-dir/config.status --config` eval src-dir/configure "$args" CFLAGS=-g --srcdir=src-dir
gee*_*aur 13
config.status有选择权; ./config.status --recheck重新运行configure原始选项.您可以中断该命令并重新发出该命令(它将在运行之前显示该命令),或者您可以编辑config.status并添加新参数$ac_configure_extra_args.
我有点希望他们能够更轻松地做到这一点.曾几何时head config.status会得到你原来的configure命令. ./config.status --rerun extra args here本来不错的.
小智 5
我不敢相信没有人提到 config.log - 它为您提供了您正在寻找的内容:
该文件包含编译器在运行 configure 时产生的任何消息,以在 configure 出错时帮助调试。
它是由 configure 创建的,它是由 GNU Autoconf 2.69 生成的。调用命令行是
$ ./configure --prefix /usr/local/syslog-ng/ --enable-linux-caps --enable-spoof-source