如何使用cmake获取visual c ++默认包含路径?

时间:2013-06-20 04:32:21

标签: cmake

我尝试使用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标准头文件?

感谢。

1 个答案:

答案 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()