[題外話,clang在Windows下玩玩能夠,千萬別用它在正式項目上。一個__declspec(dllexport/dllimport)問題,兩三年了也沒任何進展,可見windows支持多不給力]shell
首先,肯定已經裝好了MingW和Msys shell以及Python,而且已經成功checkout llvm和clang的代碼。 另外,llvm/clang依賴於zlib,請確認zlib已在MingW下編譯並安裝。windows
關於MingW的版本須要注意的是x86版本的要選擇異常處理模式爲dwarf的版本而不是sjlj模式,不然編譯出來的clang++是不支持異常處理的。由於clang不支持sjlj模式。至於,x64版本MingW就別搞了,由於clang也不支持seh模式。bash
下面是具體編譯的步驟:ui
1. 啓動Msys bash shellspa
2. 在build目錄下運行llvm的configure腳本,使用 --prefix最好指向mingw安裝目錄。這個目的是爲了編譯好的clang/clang++會自動搜索gcc/g++的頭文件目錄,而不須要再用-I 來include這些路徑。可是,不少時候這招也不靈,由於不少mingw版本的頭文件組織模式和clang設想的不同。能夠本身改clang源文件llvm\tools\clang\lib\Frontend\InitHeaderSearch.cpp適配具體的狀況. 3d
configure的其餘參數可使用 configure --help 來查看具體含義,而後根據須要設定。blog
3. 爲了可以在Msys shell下正常make,須要對一些相關的makefile作一些改動:get
1)修改llvm source下unittests\Makefile.unittest的第23行it
修改成io
2)修改build目錄下生成的Makefile.config
將52 - 53行
修改成
不然windows版的GNU make就無法解析這兩個路徑,致使相關的makefile include失敗,沒法make。
另外,將184行
修改成
不然安裝時會找不到安裝腳本。這個無聊的錯誤不知道是怎麼出現的,暈。
3)修改build目錄下的projects\sample\Makefile.common
將 6, 10, 13, 16行的路徑
改成
緣由同上,不然makefile include會失敗。
4. 執行完上述步驟, 咱們就能夠在build目錄下make了
其中 -j後面的數字表示同時啓動幾個make job, 通常不要超過機器的CPU的總核數。
5. 編譯大概須要幾十分鐘不等,去喝杯茶或者乾點別的。編譯完後 make install便可。