4

LLVM3.1とClang3.1をビルドしようとしています。ClangのWebサイトのスタートガイドに従いました。必要な場所にあるリポジトリをチェックしたり、Pythonを入手したりします。

Python 3.3をインストールしている場合、Pythonセマンティックエラーが発生します。from main import mainモジュールはありませんmain。Python 2.7をインストールしている場合は、

CMake Error at CMakeLists.txt:307 (message):
  Unexpected failure executing llvm-build:
Configuring incomplete, errors occurred!

これは最も役に立ちません。WindowsでLLVMとClangを構築するために何ができるか、または少なくとも問題が何であるかを判断するために何ができるかについての提案はありますか?

ちょうどメモとして、私はVisual Studio 2012でビルドしようとしています。これは、CMakeによって公式にサポートされていますが、LLVM3.1とClang3.1が作成されたときにはリリースされていません。

編集:CMakeLists.txtからの必要な行は次のとおりです

message(STATUS "Constructing LLVMBuild project information")
execute_process(
  COMMAND ${PYTHON_EXECUTABLE} ${LLVMBUILDTOOL}
            --native-target "${LLVM_NATIVE_ARCH}"
            --enable-targets "${LLVM_TARGETS_TO_BUILD}"
            --enable-optional-components "${LLVMOPTIONALCOMPONENTS}"
            --write-library-table ${LLVMCONFIGLIBRARYDEPENDENCIESINC}
            --write-cmake-fragment ${LLVMBUILDCMAKEFRAG}
            ERROR_VARIABLE LLVMBUILDOUTPUT
            ERROR_VARIABLE LLVMBUILDERRORS
            OUTPUT_STRIP_TRAILING_WHITESPACE
            ERROR_STRIP_TRAILING_WHITESPACE
  RESULT_VARIABLE LLVMBUILDRESULT)

# On Win32, CMake doesn't properly handle piping the default output/error
# streams into the GUI console. So, we explicitly catch and report them.
if( NOT "${LLVMBUILDOUTPUT}" STREQUAL "")
  message(STATUS "llvm-build output: ${LLVMBUILDOUTPUT}")
endif()
if( NOT "${LLVMBUILDRESULT}" STREQUAL "0" )
  message(FATAL_ERROR
    "Unexpected failure executing llvm-build: ${LLVMBUILDERRORS}")
endif()

${LLVMBUILDRESULT}ここでは、それは良くないことがわかりますが、${LLVMBUILDERRORS}明らかにビルドエラーが含まれているはずですが、何も含まれていません。

4

3 に答える 3

4

問題は 2 つあります。

まず、LLVM には Python 2.x が必要です。強制的に 3.3 を使用しようとすると、失敗します。ドキュメントはおそらくこれについて何かを述べているはずです (そして、私が調べたときにそれへの参照を見つけることができませんでした) が、この段階では、プロジェクトが単に「Python」または「Python 2.6+」と言うのはまだかなり一般的です。それらは「2.6-2.7 であり、3.x ではない」という意味です。

次に、ほとんどの構成/ビルド ツールと同様に、CMake はコード内の依存関係の変更のみを検出し、システム構成内では検出しません。したがって、ビルドを試みてからシステムを変更してから再度ビルドを試みても、変更に気付かず、それに応じて構成を調整することはありません。Python 3.3 を使用するように既に構成されており、Python 2.7 に置き換えたことに気付かなかったため、問題が発生しました。強制的に再構成する必要があります。これはキャッシュをクリアすることで実行できますが、最も簡単でクリーンな答えは、クリーンなディレクトリを解凍して最初からやり直すことです。(または、多くのプロジェクトでできるように、ツリー外でビルドできる場合は、ビルド ディレクトリを消去して最初からやり直してください。)

最後に、ドキュメントによると、テストを実行したい場合を除き、Python で llvm と clang をビルドする必要はありません。したがって、ドキュメントが間違っていない限り (もちろん可能です)、Python をまったく使用せずにクリーン ビルドを実行しただけであれば、問題なく機能していたはずです。試してみたときに動かなかった理由は、2.7 をインストールした後に動かなかったのと同じ理由です: 部分的に構成された状態にあり、Python があると見なされたため、それを使用することを主張しました。

于 2012-12-10T00:43:50.497 に答える
2

私は次のようなものを使用しました

"c:\Program Files (x86)\CMake\bin\cmake.exe" -G "Visual Studio 12 2013" -DPYTHON_EXECUTABLE="C:\Python27\python27.exe" -DLLVM_TARGETS_TO_BUILD="X86" ..\llvm-3.5.0.src

そしてそれは私のために働いた。私の場合、cmakeはpythonを見つけられなかったので、使用する必要がありました

-DPYTHON_EXECUTABLE="C:\Python27\python27.exe"

システム フォルダーを上書きしなかったことに注意してください。同じ問題を抱えている人は、コマンドのフォルダーごとに異なるものを使用する必要があります。

于 2014-10-28T21:42:06.520 に答える
0

どうやら、これは主に CMake の失敗であり、Python 2.7 をインストールした後にキャッシュをクリアしていれば成功したはずです。

于 2012-12-08T19:06:43.937 に答える