为什么"make distcheck"在这个非常基本的"Hello, World!"自动工具示例中失败?
Why does "make distcheck" fail on this very basic "Hello, World!" autotools example?
当为下面描述的小"Hello,World!"示例运行"make-distcheck"时,我会收到错误消息
ERROR: files left in build directory after distclean:
./install-sh
./depcomp
./missing
为什么会生成这些错误消息?为什么自动工具不导致这些文件被删除?
我在GNU/Linux(Fedora)3.18.5-101.fc20.x86_64上使用GNU autoconf 2.69和GNU automake 1.13.4。
编辑2015-02-17:我也得到了与上描述的am-hello示例相同的行为https://www.gnu.org/software/automake/manual/automake.html#Creating-你好。该描述意味着不应该生成错误消息。
config.ac包含:
AC_PREREQ([2.69])
AC_INIT([hello], [1.0], [bugs@my.domain])
AC_CONFIG_SRCDIR([src/hello.cc])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE
AC_PROG_CXX
AC_CONFIG_FILES([Makefile
src/Makefile])
AC_OUTPUT
Makefile.am包含:
SUBDIRS = src
src/Makefile.am包含:
bin_PROGRAMS = hello
hello_SOURCES = hello.cc
src/hello.cc包含:
#include <iostream> // for cout
int main(int argc, char* argv[])
{
std::cout << "Hello, World!" << std::endl;
return 0;
}
文件NEWS、README、AUTHORS和ChangeLog存在,但为空。
执行"autoreconf--install"生成"configure"脚本。然后执行"./configure"生成Makefiles。然后执行"makedistcheck"以查看包是否已准备好分发。我收到错误消息
ERROR: files left in build directory after distclean:
./install-sh
./depcomp
./missing
如果我再次运行"autoreconf"answers"makedistcheck",则不会生成错误消息。
编辑2015-02-21:我无法在我第一次注意到问题的系统上重现该问题。自我注意到该问题以来,我接受了一些包更新,但不包括对automake或autoconf的更新。系统现在的版本为3.18.7-100.fc20.x86_64。我仍然可以在另一个系统上重现这个问题,这是第一个系统的克隆,但没有最新的软件包更新。该价格目前为3.18.6-100.fc20.x86_64。上述文件的MD5校验和在两个系统上都是相同的。我在两个系统上都运行了"autoreconf--install-v-d>autoreconf.log 2>&1",并比较了生成的autoreconf.log文件。虽然有差异,但对我来说没有任何意义。在两种情况下,autoconf(2.69)、autoheader(2.68)、automake(1.13.4)、aclocal(1.13.4,然后,"丢失"的文件被写入包主目录的父目录,就好像AC_CONFIG_AUX_DIR([..])包含在CONFIG.AC中一样——事实并非如此。解决方法是将AC_CONFIG_AUX_DIR([axiliary])添加到配置.AC中(也许AC_CONFIG_AUX_DIR([.])也可以)。
我建议运行autoreconf-iff。我总是在每个项目中创建autogen.sh脚本,其中包含以下内容。
#!/bin/sh
autoreconf -ivf
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- 在clang++预处理器中确定gcc工具链版本
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 参数化自定义CMake工具链
- 如何在QT中的自定义视频小工具t上绘制矩形
- 使用 C++ 和 i2c 工具从虚拟 i2c 写入和读取
- 无法编译wxWidgets Hello World
- 用于C++的静态二进制检测或二进制重写工具和框架
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- 简单C++"Hello World"程序的执行时间长
- 使用 AWS Lambda 触发C++文件 - Hello World
- AWS IoT 开发工具包:通过 TCP 端口 443 使用 MQTT
- 在官方张量流 resnet50 模型上运行 tflite 精度工具
- 使用 Visual Studio 2019 构建 Hello World wxwidgets 应用程序时出错
- 我怎样才能在行尾使用 cout<<"hello world";不使用 ;
- Q没有管理权限的 exe 无法启动维护工具
- C++合并排序可视化工具
- 为Bazel工具链指定sysroot
- 如何使用CLion和MSVC编译器工具链编译wxWidgets Hello World应用程序而没有错误?
- 为什么"make distcheck"在这个非常基本的"Hello, World!"自动工具示例中失败?