咋說呢,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可以正常順利編譯,
然后再整合插件系統。