2

我有以下内容configure.ac

AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_PROG_CXX
AC_OUTPUT

它会生成配置,其中包含以下几行:( grep core configure)

1572:  rm -f core *.core core.conftest.* &&
2143:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2210:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2212:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
2214:rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext

乐趣始于我有一个文件夹,名为core. 所以./configure产量

checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... rm: cannot remove 'core': Is a directory
yes
checking whether g++ accepts -g... rm: cannot remove 'core': Is a directory
yes
configure: creating ./config.status
rm: cannot remove 'core': Is a directory

我在 google 中发现,它是在编译器崩溃的情况下完成的。但是禁用此检查是否有任何好方法(我真的不关心可以在 autoconf 测试中进行核心转储的编译器)。重命名文件夹不是我想要做的。

4

2 回答 2

2

但是有什么好方法可以禁用此检查

不,没有。

重命名文件夹不是我想要做的。

在这种情况下,我建议在 autoconf 'bootstrap.sh' 脚本中的某个地方或任何运行之后修补'configure' autoreconf

#!/bin/sh
autoreconf -fvi # or whatever autoreconf needs
sed -i 's/rm -f core/rm -f/g' configure

请注意,这sed -i不是一个通用的解决方案,因为它依赖于 GNU sed,但想出一个可移植的解决方案并不难。

于 2012-08-06T19:49:06.077 回答
0

如问题所示,大多数项目都有一个configure.ac包含生成configure脚本规则的文件。最后一行几乎总是AC_OUTPUT(就像你的情况一样)。您可以在该行之后添加它(通常作为文件的最后)来操作生成的配置文件并清除有问题的命令:

m4_esyscmd_s([test -f configure && sed -i -e '/rm -f/s/ core / /' configure])
于 2019-08-26T15:34:06.597 回答