构buildLLVM失败,并显示空错误消息

我正在尝试构buildLLVM 3.1和Clang 3.1。 我遵循Clang网站上的“入门指南” – 在必要的地方检查存储库,获取Python等。

如果我安装了Python 3.3,它会给出一个Python语义错误 – from main import main主导from main import main ,没有模块叫做main 。 如果我有Python 2.7安装,它给

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

这是最无助的。 有什么build议我可以在Windows上构buildLLVM和Clang,或至less尝试确定问题是什么?

就像一个笔记一样,我正试图用Visual Studio 2012构build,而CMake正式支持它,但是在创buildLLVM 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}显然应该包含构build错误,不包含任何内容。

问题有两方面:

首先,LLVM需要Python 2.x. 如果你试图强制它使用3.3,它会失败。 该文档可能应该说一些关于这个(我看不出任何参考),但在这个阶段,项目只是说,例如,“Python”或“Python 2.6+”时,仍然是很常见的他们的意思是“2.6-2.7但不是3.x”。

其次,像大多数配置/构建工具一样,CMake只能检测代码中的依赖性更改,而不是在系统配置中。 所以,如果你试图构建,那么改变你的系统,然后再尝试构建,它不会注意到这个变化,并相应地调整它的配置。 它已经被配置为使用Python 3.3,并没有注意到你用Python 2.7取代了它,所以问题就出在这里。 你必须强制它重新配置 – 你可以通过清除缓存来做到这一点,但最简单和最干净的答案是解压/ git /无论你自己一个干净的目录,并重新开始。 (或者,如果你可以通过许多项目来构建out-of-tree,只需要删除build目录并重新开始。

最后,根据文档,除非你想运行测试,否则你真的不需要Python来编译llvm和clang。 所以,除非文档是错误的(当然这是可能的),如果你刚刚完成了一个没有Python的干净的版本,它会起作用的。 当你尝试使用它的原因是没有工作的原因是它安装2.7后没有工作的原因:你处于部分配置状态,它认为它有Python,因此它坚持使用它。

我用过类似的东西

 "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" 

请注意,我没有覆盖我的系统文件夹,然后有相同问题的人应该使用不同的命令的每个文件夹。

显然,这主要是CMake失败,如果我在安装Python 2.7之后清除了缓存,它将会成功