LLVM10.0.1 編譯


咋說呢,LLVM都10了,我也體驗一下唄。

 

編譯之前的准備,去看這個文章

https://www.cnblogs.com/suanguade/p/11415993.html

 

主要是用 cmake 生成解決方案之后的問題,這里需要說明一下。

 

首先,由於我擔心LLVM 使用的C++ 版本太高,所以,我這里生成的 VS解決方案也是版本很高的

VS2019。

 

生成了sln 之后,編譯的時候,需要注意的是。

 

1:平台選擇 x64

 

2:編譯器配置選擇 RelWithDbgInfo

(如果此時編譯整個解決方案,編譯時間大概會比完整項目編譯時間短1/3左右,結果是420+個項目編譯成功,80+個編譯失敗,下面說原因)

 

之前的老版本,如此就已經可以解決了,但是目前還是不行,后面有新增加的步驟,

 

3:到

“llvm-10.0.1.src\project\include\llvm\Config\config.h”

這個文件中,對如下宏做注釋

“#define HAVE_STD_IS_TRIVIALLY_COPYABLE 1”

此宏開啟了一個特殊的對象,此對象導致模板參數不足

(猜測可能是編譯器的問題,但是沒有做更多的驗證,因為編譯一次都太慢了)

 

4:做完上一步重新編譯之后,編譯失敗的項目降低為2個

這里其實可以處理也可以不處理了,因為這里編譯失敗的兩個項目都不是必須的項目。

其一,是一個測試項目“SupportTests”項目,內部由於JSON測試的代碼里面出現了亂碼,導致編譯器無法正確識別字符串,導致引號無法匹配,修復,或者卸載項目即可

其二,是“clang-objc-fuzzer”項目,由於缺少一個外部符號“LLVMFuzzerInitialize”,卸載了即可,不影響clang

 

以上四步全部搞定之后,LLVM可以正常順利編譯,

然后再整合插件系統。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM