0

我尝试使用 cmake 确定是否存在 inttypes.h 头文件来生成 Visual c++ 11 的项目。

最初,我在 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标准头文件?

谢谢。

4

1 回答 1

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()
于 2013-06-20T04:57:16.220 回答