windows下如何使用clang來編譯c++14項目?
我去年用clang 3.4和3.5做過兩次嘗試 Clang編譯KlayGE的嘗試Clang編譯KlayGE的第二次嘗試 不順利。
現在有ms的人衝上去搞clang了,據說好了很多。不過我還沒試過。clang for windows缺少運行庫的東西,某些代碼有鏈接錯誤。C++Builder | C++ development for Windows, Mac, iOS and Android的X64編譯器是clang3.3的,算是win下可用的clang編譯器了。就是支持C++14特性不多。
我看是一年前的問題了,不知道題主的問題解決了嗎?
我最近也是在Windows上使用clang來編譯C++14相關的文件,也遇到了很多問題,最後通過搜索stackoverflow,微軟的QA,以及http://llvm.org 相關文檔解決了。就分享下吧。
首先下載去官網下載最新的clang,clang最新的版本是3.9.0,增加了很多新feature,如下圖:本人為了兼容性的原則,在x64的windows選擇了win32的版本,選x64位也是可以的,不過在配置的時候需要注意。
然後就是安裝了,安裝成功後我們看版本信息,可以發現clang++已經是下載的版本。大家不知道注意到沒有,最新的clang的默認target是i686-pc-windows-msvc,也就是你需要下載vs2015的編譯環境才可以正常的使用。如果你已經安裝了Visual Studio 2015那麼,你就可以進行下面的配置了。但是像我這種不是太喜歡安裝很大的IDE的人,我選擇了最小的vc編譯環境。下載vc++ build tools: Download the Visual C++ Build Tools (standalone C++ compiler, libraries and tools)安裝好後,為了在終端中編譯c++14的項目成功,你需要在clang的安裝路徑(默認是這裡:C:Program Files (x86)LLVMin )下創建環境配置腳本。
創建clang-env.batcall "%VS140COMNTOOLS%....VCvcvarsall.bat" x86
set PATH=%~dp0bin;%PATH%
cmd /k
像我這種使用的是Cmder終端,每次執行clang-env.bat後,整個終端顏色都發生了變化,不太喜歡。所以就自己單獨配置了環境變數,達到了和vs執行腳本一樣的效果。
使用VS2015 x86配置(其實INCLUDE 和 LIB環境變數就是執行clang-env.bat直接輸出的變數值,直接拷貝即可):INCLUDE=C:Program Files (x86)Microsoft Visual Studio 14.0VCINCLUDE;C:Program Files (x86)Microsoft Visual Studio 14.0VCATLMFCINCLUDE;C:Program Files (x86)Windows Kits10include10.0.10240.0ucrt;C:Program Files (x86)Windows KitsNETFXSDK4.6.1includeum;C:Program Files (x86)Windows Kits8.1includeshared;C:Program Files (x86)Windows Kits8.1includeum;C:Program Files (x86)Windows Kits8.1includewinrt;
LIB=C:Program Files (x86)Microsoft Visual Studio 14.0VCLIB;C:Program Files (x86)Microsoft Visual Studio 14.0VCATLMFCLIB;C:Program Files (x86)Windows Kits10lib10.0.10240.0ucrtx86;C:Program Files (x86)Windows KitsNETFXSDK4.6.1libumx86;C:Program Files (x86)Windows Kits8.1libwinv6.3umx86;
對了,如果需要使用64位的clang,請將clang-env.bat中的x86換成x64。
然後我們就可以愉快第使用clang了^_^,最喜歡clang的提示了!!如果要在vs2015內使用clang,那麼就參考上面的答案吧。clang++ -std=c++14
: "ascii" codec can"t decode byte 0xc1 in position 2: ordinal not in range(128)
推薦閱讀:
※想在程序runtime的時候動態編譯其他code為.bc file,有什麼辦法?
※Clang parser是完全手寫的嗎?
※在編譯C語言代碼時,Clang跟gcc編譯器哪一個編譯出來的程序運行更快?特別是在浮點運算方面。
※在Mac上編C/C++不用Xcode而藉助terminal調用gcc真的好嗎?
TAG:MicrosoftWindows | C | Clang | LLVM |