In file included from D:\develop\Clang\temp.cpp:1: In file included from C:\Program Files (x86)\Microsoft Visual Studio 8\VC\INCLUDE/cstdio:5: In file included from C:\Program Files (x86)\Microsoft Visual Studio 8\VC\INCLUDE/yvals.h:6: C:\Program Files (x86)\Microsoft Visual Studio 8\VC\INCLUDE/crtdefs.h:40:2: error: #error ERROR: Only Win32 target supported! #error ERROR: Only Win32 target supported!
どうも_WIN32をdefineせずにcstdioをインクルードしてはいけないらしい。ということで、predefineを追加してみる。
色々調べていくと、clang::PreprocessorにsetPredefines()というAPIがあり、またその設定値をclang::MacroBuilderで生成できることがわかった。
std::string predefinesBuf; llvm::raw_string_ostream predefines(predefinesBuf); clang::MacroBuilder macroBuilder(predefines); macroBuilder.defineMacro("_WIN32"); pp.setPredefines(predefines.str());
これでビルドして実行するとプリプロセッサがエラーを出さなくなった。ブレークポイントでPreprocessor::Lex()の結果を確認すると、何かしらデータは入っているようだ。ようやく先に進めそうだ。
0 件のコメント:
コメントを投稿