2012-12-07 52 views
3

我试图构建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}这显然应该包含生成错误不包含任何东西。

+0

首先,我非常确定你确实需要Python 2.x,所以3.3不会工作,即使文档没有明确地说明这一点。 (但是我可能是错的,clang发展得非常快......)除此之外,是什么让你认为这个错误与Python有什么关系?你展示的信息中没有提到任何Python;它是指“配置”。 (你有'CMakeLists.txt'在你面前,所以你可以看看第307行,看看它在做什么。) – abarnert

+0

其次,你是否尝试用Python 3.3进行配置,然后卸载并安装Python 2.7并尝试构建没有清理和重新配置?因为它可能会让人困惑它是否可以使用Python。当系统同时发生变化时,大多数配置系统在“恢复”配置时都不好。 – abarnert

+0

最后,正如您链接的文档要明确说明的那样,只有在您将运行测试时才需要Python。如果你计划攻击Clang或LLVM(而不是仅仅使用它们),或者如果你已经安装了一个安装程序,但你遇到了神秘的故障,那么你想运行测试。但除此之外,你不需要。那么,为什么不直接不用Python配置呢? – abarnert

回答

3

后清除缓存它会成功,问题有两方面:

首先,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,就可以删除构建目录并重新开始。)

最后,根据文档,您确实不需要Python建立llvm和clang,除非你想运行测试。所以,除非文档错误(当然这是可能的),如果你刚完成了一个完全没有Python的干净版本,它就可以工作。当你尝试使用它时,它没有工作的原因与安装2.7后无法使用的原因相同:你处于部分配置状态,它认为它有Python,因此它坚持使用它。

0

显然,这是一个失败的CMake为主,如果我安装Python 2.7

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没有发现蟒蛇,所以我只好用

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

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

相关问题