我关注configure.ac
:
AC_PREREQ([2.69])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
AC_PROG_CXX
AC_OUTPUT
它会生成configure,其中包含以下行:(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测试中进行核心转储的编译器)。 重命名文件夹不是我想要做的。
答案 0 :(得分:1)
但这是禁用此检查的好方法
不,没有。
重命名文件夹不是我想要做的。
在这种情况下,我建议修补'配置'在autoconf的某个地方' bootstrap.sh'脚本或任何运行autoreconf
之后:
#!/bin/sh
autoreconf -fvi # or whatever autoreconf needs
sed -i 's/rm -f core/rm -f/g' configure
请注意sed -i
不是一个通用的解决方案,因为它依赖于GNU sed,但它并不太难以提出便携式解决方案。
答案 1 :(得分:0)
问题显示,大多数项目都有一个configure.ac
文件,其中包含用于生成configure
脚本的规则。最后一行几乎总是AC_OUTPUT
(在您的情况下如此)。您可以在该行之后(通常作为文件的末尾)添加此代码,以操作生成的配置文件并清除有问题的命令:
m4_esyscmd_s([test -f configure && sed -i -e '/rm -f/s/ core / /' configure])