Windows で cling を実行することは可能ですか?
Visual C++ 12.0 でソース (ビルド手順)から cling を正常にコンパイルしましたが、実行しようとすると次のランタイム エラーが発生します。
F:\Dev\open-source\Cling\src\build\Debug\bin>cling.exe
ERROR in cling::CIFactory::createCI():
resource directory F:\Dev\open-source\Cling\src\build\Debug\lib\clang\3.6.0 not found!
Assertion failed: !CurTokenLexer && "Cannot #include a file inside a macro!", file ..\..\..\..\..\tools\clang\lib\Lex\PPLexerChange.cpp, line 73
次のリンクをグーグルで検索しました:
- Windows での Cling (C++ インタープリター) のビルド- Cygwin は使いたくないので、この記事は 2 年前のものです。
ところで、私は Clang (Clang バージョン 3.6.0 (トランク)) を持っていますが、すべて正常に動作します。
で実行するとcling -x c
、同じエラーが発生しますが、アサーションはありません (-x
後続の入力ファイルをタイプ <language> として扱うことを意味します)。
F:\Dev\open-source\Cling\src\build\Debug\bin>cling -x c
ERROR in cling::CIFactory::createCI():
resource directory F:\Dev\open-source\Cling\src\build\Debug\lib\clang\3.6.0 not found!
****************** CLING ******************
* Type C++ code and press enter to run it *
* Type .q to exit *
*******************************************
[cling]$ #include <stdio.h>
[cling]$ printf("%s", "test");
test
[cling]$
このリンクから:
Windows での cling の制限は、clang が Windows マングリング スキームを完全にサポートしていない、つまりバイナリ互換性がないという事実から来ています。たとえば、clang/gcc コンパイラ以外でコンパイルされた関数を呼び出すことはできません。-最近、clang 側でその方向に多くの進歩があります。しがみつく理由を調査する必要があります。つまり、OS が Windows の場合、CIFactory ですべてが正しくセットアップされます。- C にはマングリングがないため、C モードの cling は Windows で動作する必要があります (つまり cling -xc)。
... これは私たちがすぐに取り組む予定の問題であり、パッチは大歓迎です。