用Cmake和Visual Stuidio构建LLVM无法安装

Building LLVM with CMake and Visual Stuidio fails to install,

本文关键字:LLVM 安装 构建 Stuidio Cmake Visual      更新时间:2023-10-16

我当前在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".

其他所有内容都可以正常安装,其他LIB,标题都在那里,是的,我正在管理模式下运行Visual Studio,只是为了确保复制周围的文件等。这是完整的错误:

我进行了仔细检查,并且相同的路径起作用,我试图在Correpsond 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的怪异旧重新分布,即使清除安装程序后,我也无法安装它,因为有一个新的。对此事的任何帮助将不胜感激

欢呼

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

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

在这里:

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

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

我是LLVM的新手。熟悉为LLVM做出贡献的人可能会帮助我将此修复程序提交给LLVM项目。谢谢!

更新

此修复程序未提交。这里给出代码段,希望它将有用。

if(CMAKE_CONFIGURATION_TYPES)
  string(REGEX REPLACE "\$\(Configuration\)" "$<CONFIG>" output_dir "${output_dir}")   # <--- The added line
  foreach(build_mode ${CMAKE_CONFIGURATION_TYPES})
    string(TOUPPER "${build_mode}" CONFIG_SUFFIX)
    set_target_properties("${target}" PROPERTIES
        "ARCHIVE_OUTPUT_DIRECTORY_${CONFIG_SUFFIX}" ${output_dir}
        "LIBRARY_OUTPUT_DIRECTORY_${CONFIG_SUFFIX}" ${output_dir}
        "RUNTIME_OUTPUT_DIRECTORY_${CONFIG_SUFFIX}" ${output_dir})
  endforeach()
else()
  set_target_properties("${target}" PROPERTIES
      ARCHIVE_OUTPUT_DIRECTORY ${output_dir}
      LIBRARY_OUTPUT_DIRECTORY ${output_dir}
      RUNTIME_OUTPUT_DIRECTORY ${output_dir})
endif()

我一直在为此而战,但是暂时,我有解决方法。诀窍是直接从CMake触发安装目标而无需打开Visual Studio,这似乎可以解决问题。

我只是从cmake构建:

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

所有这样的总结实际上要快得多,因为您避免了所有侧面工作,而vs vs in索引等等。

对于现在来这个问题的任何人来说

  1. 确保视觉工作室在路径上,
  2. 将cmake添加到路径

第一个是通过运行"开发人员命令提示为VS2017"而不是常规命令提示来解决的,但是我相信还有其他方法可以实现这一目标。第二个(假设典型的CMAKE安装路径):

set PATH=C:Program FilesCMakebin;%PATH%