我想使用CMake来检查stdlib.h
是否具有getopt()
功能(我知道这已经存在多年了,但我仍然需要执行此检查,这个问题是关于一般问题)。
我知道如何检查是否存在包含文件:
check_include_files(malloc.h HAVE_MALLOC_H)
但不存在该文件提供的功能。我怎么能这样做?
修改:实际上getopt()
永远不在stdlib.h
中,通常在unistd.h
,但没关系,问题可以按照要求进行。
答案 0 :(得分:4)
您可以使用CheckSymbolExists()
执行此操作:
CHECK_SYMBOL_EXISTS(getopt stdlib.h HAVE_GETOPT)
答案 1 :(得分:2)
我在考虑使用CheckFunctionExists()
:
CheckFunctionExists(getopt, HAVE_GETOPT)
...事实证明,我实际上需要这个而不是接受的答案,因为函数的可用性通常在我的情况下更重要,而不是它是否由某个标题提供
答案 2 :(得分:1)
您可以使用此代码实现您自己的函数以匹配字符串
#define CHUNK 1024 /* read 1024 bytes at a time */
char buf[CHUNK];
FILE *file;
if (check_file("malloc.h",HAVE_MALLOC_H) == 1)
printf("Match found!");
else
printf("Match not found");
int check_file(char *file_name, char *match_str)
{
file = fopen(file_name, "r");
while(fgets(match_str,CHUNK , file) != EOF)
{
if(strstr(str,match_str) != NULL)
return 1;
}
return 0;
}