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