翻譯|使用教程|編輯:鮑佳佳|2020-12-08 10:03:40.233|閱讀 555 次
概述:有了 CMake 3.15,在 Windows 上用 GNU 風(fēng)格的命令行使用 Clang 編譯器成為可能。這也意味著可以用Mingw-w64工具鏈來使用Clang。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
CLion是一款專為開發(fā)C及C++所設(shè)計(jì)的跨平臺(tái)IDE。它是以IntelliJ為基礎(chǔ)設(shè)計(jì)的,包含了許多智能功能來提高開發(fā)人員的生產(chǎn)力。這種強(qiáng)大的IDE幫助開發(fā)人員在Linux、OS X和Windows上來開發(fā)C/C++,同時(shí)它還使用智能編輯器來提高代碼質(zhì)量、自動(dòng)代碼重構(gòu)并且深度整合CMake編譯系統(tǒng),從而提高開發(fā)人員的工作效率。
有了 CMake 3.15,在 Windows 上用 GNU 風(fēng)格的命令行使用 Clang 編譯器成為可能。這也意味著可以用Mingw-w64工具鏈來使用Clang。
雖然可以用Mingw-w64(或MinGW)工具鏈來配置Clang,但如果你決定使用LLVM repo的Clang,它將無法正常工作。這是因?yàn)長LVM Clang for Windows是使用Microsoft Visual Studio構(gòu)建的,所有內(nèi)置的宏和包含的搜索路徑都是為使用Visual Studio而設(shè)置的。所以即使與MinGW工具鏈一起使用,它仍然會(huì)嘗試包含MSVC標(biāo)準(zhǔn)庫頭。
我們做了一些實(shí)驗(yàn),發(fā)現(xiàn)了一個(gè)可能的工作流程,就是使用CLion與MinGW工具鏈和Clang編譯器相結(jié)合。
這是我們的發(fā)現(xiàn):
此Clang編譯器使用mingw-w64構(gòu)建,并具有與該工具鏈相對(duì)應(yīng)的路徑和宏。
現(xiàn)在我們準(zhǔn)備建立CLion工具鏈。轉(zhuǎn)到Settings/Preferences | Build, Execution, Deployment | Toolchains:
配置了新的工具鏈后,就可以開始構(gòu)建項(xiàng)目了。您可以使用默認(rèn)的ld連接或設(shè)置lld有-DCMAKE_LINKER=lld。
使用Clang編譯器提供的高級(jí)工具
從理論上講,所有Clang工具都應(yīng)該可以正常工作。但是,涉及編譯器-rt可能會(huì)出現(xiàn)問題。編譯器-rt是一組運(yùn)行時(shí)庫,在Clang中使用消毒劑和配置文件是必需的,當(dāng)前的compile_rt軟件包是使用MinGW構(gòu)建的。但是Clang需要使用Clang和lld構(gòu)建的編譯器。
在我們的案例中,我們想使用配置文件引導(dǎo)的優(yōu)化。進(jìn)行此工作的一種方法是獲取與MSYS2中的Clang版本完全相同的版本的editor-rt源代碼。這可能具有挑戰(zhàn)性,因此另一個(gè)解決方案是克隆LLVM monorepo并構(gòu)建所需的工具。
對(duì)于-fprofile-instr-generate,僅構(gòu)建compile -rt和llvm-profdata來合并探查器結(jié)果可能就足夠了。但是,要可靠地使用所有工具,最好也構(gòu)建Clang和lld。
幸運(yùn)的是,我們已經(jīng)具有該構(gòu)建所需的設(shè)置。
最后一步是將<msys2_path>/mingw64/lib\clang/<clang_version>/libwindows中的二進(jìn)制文件替換為<compiler-rt_path>/cmake-build-release-mingw_clang/libwindows或<llvm_build_path>/lib/clang/<clang_version>/lib/windows中的庫。
使用Clang進(jìn)行性能分析
有了正確的編譯器-rt庫,現(xiàn)在就可以使用與-fprofile-instr-generate / -fprofile-instr-use標(biāo)志設(shè)置的相同的工具鏈。因?yàn)槲覀円呀?jīng)有了源代碼,所以讓我們?yōu)榇藢?shí)驗(yàn)構(gòu)建LLVM。我們還將使用-DLLVM_ENABLE_LTO = Thin進(jìn)行更多優(yōu)化。轉(zhuǎn)到Settings/Preferences | Build, Execution, Deployment | CMake:
使用此CMake配置,您可以構(gòu)建Clang編譯器并使用它,例如,構(gòu)建自己的項(xiàng)目。這將生成相關(guān)的探查器信息,稍后應(yīng)將其與我們之前構(gòu)建的工具llvm-profdata合并。使用合并的profile_merged.profdata文件,您最終可以構(gòu)建Clang編譯器的優(yōu)化版本:
使用自定義Clang和lld
要讓gcc風(fēng)格的-fprofile-generate/-fprofile-use標(biāo)志正確工作,需要改變Clang路徑,并將-DCMAKE_LINKER設(shè)置為新構(gòu)建的ld。你還需要一些額外的LLVM技巧:-femulated-tls和鏈接pthread。
然后,應(yīng)重復(fù)使用-fprofile-instr-generate / -fprofile-instr-use執(zhí)行的所有步驟。
結(jié)論
現(xiàn)在可以在Windows上使用Clang,并且不需要安裝Microsoft Visual Studio!
我們希望在不久的將來,使用高級(jí)的clang工具將變得更加容易,并且不再需要手動(dòng)構(gòu)建。讓我們知道,如果您發(fā)現(xiàn)其他方法可以達(dá)到相同的效果!
今天的內(nèi)容你學(xué)會(huì)了嗎?前往慧都網(wǎng)免費(fèi)下 載最新版嘗試一下,并在評(píng)論分享你的想法?!?strong>慧都17周年慶”低價(jià)狂潮,省到尖叫最高立減2999元!低至797元!想要購買Clion正版授權(quán)的朋友歡迎。
JetBrain技術(shù)交流群現(xiàn)已開通,QQ搜索群號(hào)“786598704”或者掃描下方二維碼即可加入
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: