Autotools:Autoscan忘记了一些检查

时间:2018-02-09 18:39:00

标签: autotools

我正在迁移项目以使用autotools构建它,并使用autoscan获取configure.ac文件的模板。

我想检查生成的configure脚本是否正在测试某些库头文件,因此我卸载了我在项目中使用的库以进行测试。由于缺少标题,确保编译失败,但配置脚本之前没有检查过这些标题的存在。

我检查了autoscan的输出文件,似乎autoscan忘记了一些标题:

来自configure.scan

AC_CHECK_HEADERS([fcntl.h limits.h stddef.h stdlib.h string.h unistd.h])

项目中包含的所有标题(cat src/*.[c,h] | grep 'include <' | sort | uniq):

#include <errno.h>
#include <fcntl.h>
#include <getopt.h>
#include <limits.h>
#include <mosquitto.h> (library)
#include <owcapi.h> (library)
#include <pthread.h>
#include <signal.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <wait.h>

自动扫描后为什么库头文件和其他libc头文件丢失了?

编辑:函数调用也一样。

1 个答案:

答案 0 :(得分:1)

我非常确定autoscan只包含对那些已知丢失的C语言标题的检查,或者对某些(通常是模糊的)编译器或平台的工作方式不同。

总是可以假设存在的标题,它不会检查。

它也不会检查外部库头。您应该通过pkg-config提供自己的检查。