Makefile “你怎么看?”;“回声”;最后一次配置/生成--源目录中的选项?

Makefile “你怎么看?”;“回声”;最后一次配置/生成--源目录中的选项?,makefile,gnu,autotools,configure,autoconf,Makefile,Gnu,Autotools,Configure,Autoconf,当执行GNU风格的测试时,“/configure,make,and install””-使用特定的选项,标志等。。。大家都知道,有时候这可能是一门黑人艺术。。对一个软件有效的可能对其他软件无效 现在,想象一下,您已经成功地构建了一些带有一些选项的包XYZ.app,比如 %./configure--with-1=2 USFLAG=“-3-four”模糊_-LIB=l/LIB/doihave 然后继续使用它。伟大的后来,您意识到您需要一个先前省略的编译时选项,或者您已经解决了依赖性问题,等等。无论出

当执行GNU风格的测试时,“/configure,make,and install””-使用特定的选项,标志等。。。大家都知道,有时候这可能是一门黑人艺术。。对一个软件有效的可能对其他软件无效

现在,想象一下,您已经成功地构建了一些带有一些选项的包XYZ.app,比如

%./configure--with-1=2 USFLAG=“-3-four”模糊_-LIB=l/LIB/doihave

然后继续使用它。伟大的后来,您意识到您需要一个先前省略的编译时选项,或者您已经解决了依赖性问题,等等。无论出于何种原因,您都希望重新编译这个完美的二进制文件

现在您如何“回忆”您传递给的所有选项
。/configure,逐字逐句,以便使用这些相同的选项,同时可能增加或减少一些选项

我敢肯定这些东西埋在所有那些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" *
glibtoolize、otool、autoconf、automake、包装配置。。。大家似乎都不愿意帮忙。 一个关闭调用似乎是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
然而,这些看起来只是环境变量,而不是来自实际配置调用的参数。。。
我已经猜腻了。。。找出原始生成参数的真正方法是什么,以便您可以随意再次使用它们…?

如果您仍然拥有生成树,请运行
/config.status--重新检查
,然后快速按CTRL-C,因为它会打印出在重新运行
configure
config之前要运行的内容。status
中有选项
/config.status--重新检查
使用原始选项重新运行
配置
。您可以中断该命令并重新发出该命令(在运行该命令之前它将显示该命令),或者您可以编辑
config.status
,并将新参数添加到
$ac\u configure\u extra\u args


我真希望他们能让这件事变得容易些。从前,
head config.status
会为您提供原始的
configure
命令
/config.status--在这里重新运行额外的参数会很好。

我不敢相信没有人提到config.log-它提供了您想要的东西:

此文件包含编译器在运行时生成的任何消息 运行configure,在configure出错时帮助调试

它是由configure创建的,它是 由GNU Autoconf 2.69生成。调用命令行被激活


$。/configure--prefix/usr/local/syslog ng/--enable linux caps--enable spoof source

令人难以置信的是,其他人都错过了实现这一点的标准方法,这种方法在该线程开始之前的2年就已经存在了

当我读到这篇文章时,我想知道与OP相同的事情,并对缺乏正确的(非丑陋的)方法感到失望

几天后,当我悠闲地浏览Autoconf的发行说明时,我到达了。你会相信吗

Autoconf 2.65的主要变化(2009-11-21)[稳定]

[……]

config.status现在提供了一个--config选项来生成配置

因此,只要运行
/config.status--config
就可以完全满足OP的要求

以下是文档中的相应参考和报价:

--config

以可重用的方式打印配置设置,为shell引用,然后退出。例如,对于以其他方式重用src dir中包的不同生成目录build dir中的配置的调试生成,可以使用以下命令:

args=`build-dir/config.status --config`
eval src-dir/configure "$args" CFLAGS=-g --srcdir=src-dir

我在我的机器上打开了一个随机的
config.status
。。。这是2600行,84325个字符的虚拟gobbledygook。我相信你,信息可能就在那里。。。但是在哪里呢?我想知道我以前做过什么,那很有效。。。不改变任何我不需要改变的东西,与之前的设置相矛盾,等等。顺便说一下,我不是想离题,但他们是谁,真的,(你提到的)?不去查它,gnu“人”在我的脑海中仅仅是一些准神话的、ram shepharding的、年长的人——他们拒绝停止使用Netscape 3.0等等。在你最喜欢的编辑器中打开它,搜索字符串
/configure
;的第二个匹配项;这一行,以及紧接前面的
ac_configure_extra_args
设置(我在这里方便地找到了示例中的两行),就是设置所在的位置。(它们将根据所使用的
autoconf
版本而移动。非常旧的版本将在脚本顶部几行的注释中复制
configure
命令行。)至于“它们”,文档主要维护者和贡献者。这很好。例如,我得到
/config.status--重新检查
-->
运行config\u SHELL=/bin/sh/bin/sh./configure--使用mysql--使用ffmpeg--使用php=/usr/local/sbin/php fpm--使用wwwuser=\u www--使用wwwgroup=\u www CFLAGS=-arch x86\u 64-g-Os-pipe-无cpp预编译LDFLAGS=-arch x86\u 64-bind\u加载时--无创建--无递归文件夹。这一切听起来都很熟悉,这绝对是我想知道的。。现在,你认为为什么他们让我们很难。。。在上面提到的任何文档中都没有值得一提的地方吗?@alex gray:我想可能是因为没有预料到用户会真正使用它。我知道这一点的唯一原因是因为我看到了configure的重建规则。我认为这应该是正确的答案。直截了当地说出OP的问题。