0

Visual C++ 11 の生成プロジェクト用の inttypes.h ヘッダー ファイルが存在するかどうかを判断する cmake を使用しようとしています。

最初に、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 に答える