我試圖構建LLVM 3.1和Clang 3.1。我跟着從Clang's website入門指南 - 檢查出庫在必要的地方,讓Python等構建LLVM失敗,並顯示空的錯誤消息
如果我已經安裝了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正式支持,但在創建LLVM 3.1和Clang 3.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}
這顯然應該包含生成錯誤不包含任何東西。
首先,我非常確定你確實需要Python 2.x,所以3.3不會工作,即使文檔沒有明確地說明這一點。 (但是我可能是錯的,clang發展得非常快......)除此之外,是什麼讓你認爲這個錯誤與Python有什麼關係?你展示的信息中沒有提到任何Python;它是指「配置」。 (你有'CMakeLists.txt'在你面前,所以你可以看看第307行,看看它在做什麼。) – abarnert
其次,你是否嘗試用Python 3.3進行配置,然後卸載並安裝Python 2.7並嘗試構建沒有清理和重新配置?因爲它可能會讓人困惑它是否可以使用Python。當系統同時發生變化時,大多數配置系統在「恢復」配置時都不好。 – abarnert
最後,正如您鏈接的文檔要明確說明的那樣,只有在您將運行測試時才需要Python。如果你計劃攻擊Clang或LLVM(而不是僅僅使用它們),或者如果你已經安裝了一個安裝程序,但你遇到了神祕的故障,那麼你想運行測試。但除此之外,你不需要。那麼,爲什麼不直接不用Python配置呢? – abarnert