我正在尝试将项目迁移到自动工具,被困于集成我们使用的第三方库。一些以基本方式工作:(以下是我的configure.ac中的内容)
AC_CONFIG_SUBDIRS([thirdparty/sqlite])
AC_CONFIG_SUBDIRS([thirdparty/protobuf])
但是readline不会:
AC_CONFIG_SUBDIRS([thirdparty/readline])
当我尝试使用autoreconf时,出现以下错误:
brett@Brett-Thinkpad:~/auto3$ autoreconf
autoheader: warning: missing template: CTYPE_NON_ASCII
autoheader: Use AC_DEFINE([CTYPE_NON_ASCII], [], [Description])
autoheader: warning: missing template: FIONREAD_IN_SYS_IOCTL
autoheader: warning: missing template: HAVE_BSD_SIGNALS
autoheader: warning: missing template: HAVE_GETPW_DECLS
autoheader: warning: missing template: HAVE_LANGINFO_CODESET
autoheader: warning: missing template: HAVE_MBRLEN
autoheader: warning: missing template: HAVE_MBSCMP
autoheader: warning: missing template: HAVE_MBSNRTOWCS
autoheader: warning: missing template: HAVE_MBSRTOWCS
autoheader: warning: missing template: HAVE_MBSTATE_T
autoheader: warning: missing template: HAVE_POSIX_SIGNALS
autoheader: warning: missing template: HAVE_POSIX_SIGSETJMP
autoheader: warning: missing template: HAVE_STRUCT_DIRENT_D_FILENO
autoheader: warning: missing template: HAVE_STRUCT_DIRENT_D_INO
autoheader: warning: missing template: HAVE_USG_SIGHOLD
autoheader: warning: missing template: HAVE_WCRTOMB
autoheader: warning: missing template: HAVE_WCSCOLL
autoheader: warning: missing template: HAVE_WCSDUP
autoheader: warning: missing template: HAVE_WCTYPE
autoheader: warning: missing template: HAVE_WCWIDTH
autoheader: warning: missing template: MUST_REINSTALL_SIGHANDLERS
autoheader: warning: missing template: NO_MULTIBYTE_SUPPORT
autoheader: warning: missing template: SPEED_T_IN_SYS_TYPES
autoheader: warning: missing template: STRCOLL_BROKEN
autoheader: warning: missing template: STRUCT_WINSIZE_IN_SYS_IOCTL
autoheader: warning: missing template: STRUCT_WINSIZE_IN_TERMIOS
autoheader: warning: missing template: TIOCSTAT_IN_SYS_IOCTL
autoheader: warning: missing template: VOID_SIGHANDLER
autoreconf: /usr/bin/autoheader failed with exit status: 1
Readline源代码看起来与SQLite和Protobuf的组织方式相同-./configure && make && make安装对这三个工具都相同。 readline有什么不同? (我使用的是Readline 6.2版)
(很抱歉,如果这是基本知识……我才刚开始使用Autotools)
最佳答案
我不熟悉readline的来源,但我想您或readline都使用了过时的自动工具版本。这不会停止./configure && make && make install
的工作,因为当您下载tarball时,您会得到已经生成了不兼容版本的自动工具的configure
和Makefile
。但这确实意味着您无法使用您的自动工具版本生成新工具。
您可以通过执行错误消息告诉您的方法来解决此问题:添加如下几行代码:
AC_DEFINE([CTYPE_NON_ASCII], [], [Description])
到
thirdparty/readline/configure.ac
。如果问题出在您身边,请升级到最新的自动工具。有关更具体,更有效的建议,请在您的问题中包括令人讨厌的
configure.ac
,并告诉我们您所使用的自动工具的版本。关于c++ - Readline为什么不能在autoconf中用作子目录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5018649/