我尝试使用cmake确定是否存在用于生成visual c ++ 11项目的inttypes.h头文件。
最初,我在CMakeLists.txt中编写了以下句子
FIND_FILE(HAVE_INTTYPES_H "inttypes.h" DOC "Does the inttypes.h exist?")
不幸的是,HAVE_INTTYPES_H变量是HAVE_INTTYPES_H-NOTFOUND。
之后,我查找了关于find_file的cmake文档,其中提到了对某些搜索路径的需求。但我无法在cmake的任何地方获得c标准头文件?
感谢。
答案 0 :(得分:0)
您的find_file
来电是正确的。问题是Visual Studio上没有inttypes.h。因此,请保持您的测试相同,但如果找不到包含其他标题,例如提供:http://code.google.com/p/msinttypes/
类似的东西:
FIND_FILE(HAVE_INTTYPES_H "inttypes.h" DOC "Does the inttypes.h exist?")
if (HAVE_INTTYPES_H)
add_definitions(-DHAVE_INTTYPES_H=1)
endif()
并在您的代码中:
#ifdef HAVE_INTTYPES_H
#include <inttypes.h>
#else
#include "path/to/inttypes.h"
#endif
现在,要检测标头,您可能还想尝试使用CheckIncludeFile
标准CMake模块,它尝试使用目标编译器检测包含文件,而不是搜索文件系统:
include(CheckIncludeFile)
check_include_file("stdint.h" STDINT_H_FOUND)
if (STDINT_H_FOUND)
add_definitions(-DHAVE_STDINT_H=1)
endif()