[英]Building LLVM with CMake and Visual Stuidio fails to install,
我目前在 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 只是為了確保復制文件周圍沒有問題等。這是完整的錯誤:
我已經仔細檢查並且相同的路徑有效,文件存在我試圖進入相應的 cmake 安裝並將斜杠更改為反斜杠仍然沒有運氣。 我可以在那里手動復制庫,但我不確定我還需要復制什么以及這就是我試圖正確解決它的原因。 我離開了主干,但看起來我的問題已經消失了一段時間:
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
通過此修復,我成功編譯並安裝了帶有 Visual Studio 2017 的 LLVM 10。
我是 LLVM 新手。 熟悉 LLVM 貢獻的人可能會幫助我將此修復提交給 llvm-project。 謝謝!
未提交此修復程序。 這里給出了代碼片段,希望它有用。
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 觸發 INSTALL 目標,而無需打開 Visual Studio,這似乎可以解決問題。
從 CMake 構建我只是做了:
cmake --build . --config Release --target ALL_BUILD
cmake --build . --config Release --target INSTALL
總而言之,這種方式實際上要快得多,因為您避免了 VS 為索引等所做的所有副業。
對於現在提出這個問題的任何人:Marco Giordanos 的回答幾乎為我做到了,但我必須先采取一些額外的步驟(這對我來說並不明顯):
第一個是通過運行“VS2017 的開發人員命令提示符”而不是常規命令提示符來解決的,但我相信還有其他方法可以實現這一點。 第二個(假設典型的 CMake 安裝路徑):
set PATH=C:\Program Files\CMake\bin;%PATH%
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.