使用CMake和Visual Stuidio构建LLVM无法安装,

时间:2017-09-08 03:57:08

标签: c++ cmake visual-studio-2017 llvm

我在Windows下构建llvm + compiler-rt时遇到了一个问题。我正在使用最新的vs 2017社区和cmake来生成解决方案。一切顺利。

然后我按照说明进行操作。我遇到的问题是安装时间;我收到以下错误:

file INSTALL cannot find
77>  "F:/WORK_IN_PROGRESS/compile/build/$(Configuration)/lib/clang/6.0.0/lib/windows/clang_rt.builtins-x86_64.lib".

所有其他安装都很好,其他的库​​,标题都在那里,是的我在管理模式下运行visual studio只是为了确保复制文件周围没有问题等。这是完整的错误:

我已经双重检查并且相同的路径工作,文件存在我试图进入correpsonding cmake安装并将斜杠更改为反斜杠仍然没有运气。我可以手动复制lib,但我不确定我还需要复制什么,以及我为什么要尝试正确解决它。我离开了行李箱,但看起来我已经离开了一段时间的问题:

77>CMake Error at projects/compiler-rt/lib/builtins/cmake_install.cmake:34 (file):
77>  file INSTALL cannot find
77>  "F:/WORK_IN_PROGRESS/compile/build/$(Configuration)/lib/clang/6.0.0/lib/windows/clang_rt.builtins-x86_64.lib".
77>Call Stack (most recent call first):
77>  projects/compiler-rt/lib/cmake_install.cmake:33 (include)
77>  projects/compiler-rt/cmake_install.cmake:33 (include)
77>  projects/cmake_install.cmake:32 (include)
77>  cmake_install.cmake:64 (include)
77>

另外,作为旁注,看起来安装过程正试图访问vs 2017的奇怪的旧可再发行组件而且我无法安装它,即使在清理安装程序后它也会因为有新的安装程序而失败。 任何有关此事的帮助将不胜感激

干杯

3 个答案:

答案 0 :(得分:1)

这可以通过添加以下CMake代码行来解决:

string(REGEX REPLACE "\\$\\(Configuration\\)" "$<CONFIG>" output_dir "${output_dir}")

此处:

https://github.com/llvm/llvm-project/blob/master/compiler-rt/cmake/Modules/AddCompilerRT.cmake#L12

通过此修复程序,我成功地使用Visual Studio 2017编译并安装了LLVM 10。

我是LLVM的新手。熟悉LLVM的人可能会帮助我将此修复程序提交给llvm-project。谢谢!

答案 1 :(得分:0)

我一直在与此斗争,但暂时,我有一个解决方法。诀窍是直接从CMake触发INSTALL目标,而不需要打开visual studio,这似乎可以解决问题。

从CMake构建我只是做了:

cmake --build . --config Release --target ALL_BUILD
cmake --build . --config Release --target INSTALL

所有总结这种方式实际上要快得多,因为你避免了VS为索引等做的所有副作用。

答案 2 :(得分:0)

对于现在遇到这个问题的任何人:Marco Giordanos的回答几乎对我来说是成功的,但是我必须先采取一些其他步骤(对我而言这并不明显):

  1. 确保Visual Studio位于路径中,并且
  2. 将CMake添加到路径

第一个问题是通过运行“ VS2017开发人员命令提示符”而不是常规命令提示符来解决的,但是我相信还有其他方法也可以实现。第二条(假设典型的CMake安装路径):

set PATH=C:\Program Files\CMake\bin;%PATH%