6.8多个案例

一些操作可以通过几种可能的方式完成,具体取决于操作系统变体。检查它们基本上需要一个“案例声明”。Autoconf不直接提供;然而,事实确实如此通过使用shell变量跟踪执行该操作的方法已经找到。

下面是一个使用shell变量的示例fs类型保持跟踪是否需要检查其余案例。请注意因为fs类型在我们的控制下,我们不必使用更长的'测试“x$fstype”=xno’.

AC_MSG_CHECKING([如何获取文件系统类型])fstype=否#这些测试的顺序很重要。AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include<sys/statvfs.h>#包括<sys/fstyp.h>]])],[AC_DEFINE([FSTYPE_STATVFS],[1],[定义statvfs是否存在。])fstype=SVR4])AS_IF([test$fstype=no],[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include<sys/statfs.h>#包括<sys/fstyp.h>]])],[AC_DEFINE([fsttype_USG_STATFS],[1],[定义USG状态。])fstype=SVR3])])AS_IF([test$fstype=no],[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include<sys/statfs.h>#包括<sys/vmount.h>]])],[交流定义([FSTYPE_AIX_STATFS],[1],[Define if AIX statfs.])fstype=AIX])])#(此处省略了更多案例)AC_MSG_RESULT([$fstype])