没有规则来制作目标 'bootstrap','distdir-am' 需要它停止

问题描述

我在使用 automake 'make dist' 时遇到以下问题。下面是编译器报告的错误的快照。我使用的是 Debian 10.5,默认编译器版本为 8.0.3;自动配置 2.69; automake 1.16.1,libtool 2.4.6

######## Problem ########

aperri@debian:~/XerlangCPL2$ make dist
make  dist-gzip am__post_remove_distdir='@:'
make[1]: Entering directory '/home/aperri/XerlangCPL2'
make  distdir-am
make[2]: Entering directory '/home/aperri/XerlangCPL2'
make[2]: *** No rule to make target 'bootstrap',needed by 'distdir-am'.  Stop.
make[2]: Leaving directory '/home/aperri/XerlangCPL2'
make[1]: *** [Makefile:633: distdir] Error 2
make[1]: Leaving directory '/home/aperri/XerlangCPL2'
make: *** [Makefile:710: dist] Error 2 

我在此消息中包含了我的 configure.ac 和 makefile.am,希望有解决此问题的方法

######## configure.ac ########

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.69])
AC_INIT([XerlangCPL],[1.0],[aperri1001@gmail.com])
AC_CONFIG_SRCDIR([src/xmlPROC.cpp])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])

# Enable "automake" to simplify creating Makefiles
AM_INIT_AUTOMAKE([1.16.1 subdir-objects -Wall -Werror])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])


# Checks for programs.
AC_PROG_CC
AC_PROG_CXXCPP
AC_PROG_CXX
# Used in conjuction with {TARGET}_CPPFLAGS = -DDEBUG in Makefile.am
AM_PROG_CC_C_O

# Checks for libraries.
AX_BOOST_BASE([1.67],[],AC_MSG_ERROR([Could not find a useful version of boost]))
AX_BOOST_FILESYSTEM
AX_BOOST_SYSTEM
AX_BOOST_PROGRAM_OPTIONS
AX_BOOST_REGEX
# AX_BOOST_DATE_TIME
# AX_BOOST_THREAD

# Checks for header files.

# Checks for typedefs,structures,and compiler characteristics.

# Checks for library functions
PKG_CHECK_MODULES(libxml,libxml++-2.6 >= 2.10.0 )


AC_CHECK_PROGS([DOXYGEN],[doxygen])
if test -z "$DOXYGEN";
   then AC_MSG_WARN([Doxygen not found - continuing without Doxygen support])
fi
AM_CONDITIONAL([HAVE_DOXYGEN],[test -n "$DOXYGEN"])
AC_CONFIG_FILES([Makefile doc/Doxyfile])

# AM_CONDITIONAL([DEBUG],[test x$debug = xtrue])
# AC_ARG_WITH(debug,[  --with-debug  add the debugging module],[AC_DEFINE(WITH_DEBUG,1,0)
# AC_SUBST(WITH_DEBUG,1)
# CXXFLAGS="-O0 -ggdb"])


AC_OUTPUT

echo "
  XErlang Compiler ($PACKAGE_NAME) version $PACKAGE_VERSION
  Prefix.........: $prefix
  Debug Build....: $debug
  C++ Compiler...: $CXX $CXXFLAGS $CPPFLAGS
  Linker.........: $LD $LDFLAGS $LIBS
"
######## makefile.am ########

ACLOCAL_AMFLAGS = -I m4 --install

bin_PROGRAMS = xerlangCPL
xerlangCPL_SOURCES = \
    src/xmlPROC.cpp \
    src/xml_structs.h \
    src/debug.h \
    src/conxsTracker.cpp \
    src/conxs_tracker.h \
    src/xmlConxsParser.cpp \
    src/oven_control


xerlangCPL_LDFLAGS = -DDEBUG \
                     $(libxml_LIBS) \
                     $(BOOST_LDFLAGS) \
                     $(BOOST_SYSTEM_LDFLAGS) \
                     $(BOOST_FILESYSTEM_LDFLAGS) \
                     $(BOOST_PROGRAM_OPTIONS_LDFLAGS)

xerlangCPL_CPPFLAGS = $(libxml_CFLAGS) \
                      $(BOOST_CPPFLAGS)


xerlangCPL_LIBS = $(BOOST_SYSTEM_LIBS) \
                  $(BOOST_FILESYSTEM_LIBS) \
                  $(BOOST_PROGRAM_OPTIONS_LIBS)

xerlangCPL_CXXFLAGS = -lboost_filesystem -ldl -lboost_system

# start of Doxygen section
if HAVE_DOXYGEN

doxyfile.stamp:
    $(DOXYGEN) $(top_srcdir)/doc/Doxyfile
    echo Timestamp > $@


CLEANFILES = $(top_srcdir)/doxyfile.stamp

# all-local: doxyfile.stamp
all-local: doxyfile.stamp
# clean-local:
#     rm -rf $(top_srcdir)/
endif

EXTRA_DIST = bootstrap m4/NOTES 

问题可能与包含或缺少升压模块有关。

解决方法

问题在于 EXTRA_DIST 列出了一些名为 bootstrap 的神秘文件。

Makefile.am 未提供构建此文件的说明。

因此,该文件应该已经存在于构建目录中,但实际上并不存在。

这就是您 make dist 失败的原因。

丢失文件的原因是你必须自己弄清楚的,这里唯一可以说明的是它的缺失是你构建失败的原因。

当然可以

touch bootstrap

并在 build 目录中创建一个空文件,这样就足够了。但是你应该在你的项目中调查这个文件是什么,它应该来自哪里,并相应地解决问题。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...