我检查configure.ac
了源根目录中的头文件
AC_CHECK_HEADER(log4c.h,
[],
[AC_MSG_ERROR([Couldn't find or include log4c.h])])
我想在不同的平台上给出不同的反馈,以反映提供标题的不同最直接的方式:
- 在 Debian 上,它应该会出现错误消息
Couldn't find or include log4c.h. Install log4c using 'sudo apt-get install liblog4c-dev'
- 在 OpenSUSE 上它应该会出错
... Install log4c using 'sudo yum install log4c-devel'
(没有研究包名,但你明白我的意思) - 在其他系统上(我懒得研究包名称)它应该出错
... Install log4c by fetching ftp://.../log4c.tar.gz and installing with './configure && make && make install' in the source root
一世
- 检查了
AM_CONDITIONAL
宏,但我不知道如何使用它configure.ac
而不是使用它Makefile.am
(如autoconf/automake: conditional compilation based on presence of library? 中所述) esyscmd
在 stackoverflow.com/questions/4627900/m4-executing-a-shell-command 中找到了要运行的提示,但是当我运行时添加esyscmd (/bin/echo abc)
到configure.ac
不打印任何内容autoreconf --install --verbose --force
。
两个答案都描述了在没有提到的操作系统的 shell 命令的情况下使用条件宏以及指向预定义宏(如AC_CHECK_HEADER_DEBIAN
、AC_CHECK_HEADER_SUSE
等)的链接。
以下configure.ac
不起作用:
AC_INIT([cndrvcups-common], [2.90], [krichter722@aol.de])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([foreign -Wall subdir-objects])
AC_PROG_CC
AM_PROG_AR
AM_PROG_CC_C_O
AC_MSG_NOTICE([Hello, world.])
AC_INCLUDES_DEFAULT
AC_CHECK_HEADER(check.h,
[],
[
AS_IF (test "$(lsb_release -cs)" = "vivid", [echo aaaaaa], [echo bbbbbb])
])
LT_INIT # needs to be after AM_PROGS_AR
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
因为./configure
失败了
checking check.h usability... no
checking check.h presence... no
checking for check.h... no
./configure: line 4433: syntax error near unexpected token `;'
./configure: line 4433: ` if ; then :'
./configure: line 4427: #include: command not found
无论是否AC_CHECK_HEADER
指定,都会发生这种情况。