1. 程式人生 > >【Code::Blocks】windows 環境下編譯 Code::Blocks(已修正)

【Code::Blocks】windows 環境下編譯 Code::Blocks(已修正)

Code::Blocks 在2012-11-25釋出了最新的12.11版本,相比上一個版本(10.05),Code::Blocks 進行了許多改進和更新(Change log)。

Code::Blocks是一個免費開源跨平臺IDE,使用C++開發,並且使用wxWidgets做為GUI函式庫。Code::Blocks使用了外掛架構,其功能可以使用外掛自由地擴充。目前, Code::Blocks主要針對開發CC++程式而設計。

Code::Blocks目前支援WindowsLinuxMac OS X數種平臺。使用者亦能夠在FreeBSD環境中建設Code::Blocks[1]

.


Code::Blocks 作為一個輕型的 C/C++ IDE,相比於 Visual Studio、Eclipse 等大型IDE更適合新人使用。國內大學的大部分 C/C++ 教材仍以 1998 年發行的 Visual C++ 6.0(簡稱VC 6)為IDE講解,實屬坑害學生。VC 6釋出已有十幾年,無法有效相容Windows 7/8系統,不支援 C/C++ 的最新標準,推薦大家儘快放棄它!

關於漢化:

1. Code::Blocks官方有語言國際化專案,不過提供的專案模板仍為 2006-06-30 所建立,包含詞條僅2173個,完全無法滿足最新版的8000個左右詞條(粗略估計),所以不建議使用。

2. 10.05 版本的Code::Blocks倒是有一個不錯的中文語言包,在使用這個版本的同學可以去

下載(內含使用幫助,不再解釋)。

3. 對於12.11版本的漢化工作尚無人進行,不過有同志一直在堅持做法語的國際化工作,從他那裡可以學習到一些Code::Blocks語言國際化的技術。(對於新版的漢化工作,我比較有興趣,相關準備工作仍在進行,希望能有個結果吧!)

OK,說了好多,迴歸正題。

編譯原始碼的步驟:

1.安裝最新版的Code::Blocks,因為需要用它來編譯Code::Blocks原始碼(禁止聯想到“雞生蛋與蛋生雞”的話題);

下載地址和注意事項已經在上邊給出,不再詳細說明。Code::Blocks的基本使用方法和大多數IDE類似,也不再贅述。

2.下載並編譯wxWidgets,因為Code::Blocks的GUI部分需要引用這個庫;

wxWidgets是開源、跨平臺的C++ GUI庫,詳細介紹請參考Wikipedia:wxWidgets

編譯過程比較長,需要半個多小時,而且我編譯了3次才成功。如果大家不想麻煩,可以直接下載我的release,解壓即可。

將下載到的 wxMSW-2.8.12.zip 解壓到 H 盤根目錄(根據自己的情況選擇);

編譯需要用到 MinGW 編譯器,因為我們安裝的 Code::Blocks 已經包含了這個編譯器,所以不需要重新安裝。

Code::Blocks 的安裝目錄是:H:\Program Files\CodeBlocks,MinGW 的目錄是:H:\Program Files\CodeBlocks\MinGW。如果經常手動編譯 C/C++ 原始碼,可以將下面兩個路徑新增到系統的全域性變數中:H:\Program Files\CodeBlocks\MinGW\bin;H:\Program Files\CodeBlocks\MinGW\mingw32\bin;

編譯開始。

首先,為了防止連線時記憶體不夠用:

If you are using a recent version of MinGW you may find that the object files are too large and that the linker runs out of memory. To fix this problem you need to edit config.gcc so that inline functions are not exported, by modifying the CFLAGS and CXXFLAGS lines to:

CFLAGS ?= -fno-keep-inline-dllexport

CXXFLAGS ?= -fno-keep-inline-dllexport

需要對 H:\wxMSW-2.8.12\build\msw/config.gcc 進行上面的修改。用任意的文字編輯器開啟 config.gcc ,進行修改即可。


開啟命令提示符視窗,切換當前目錄:

cd /d H:\wxMSW-2.8.12\build\msw

設定臨時環境變數(如果上一步已經設定 MinGW 的環境變數,直接跳到下一步):

set path=H:\Program Files\CodeBlocks\MinGW\bin;H:\Program Files\CodeBlocks\MinGW\mingw32\bin;

執行命令,大約需要30秒:

mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1 clean

執行命令,大約需要30分鐘,會有20多條警告,忽略之:

mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1

結束後,會在 H:\wxMSW-2.8.12\lib\gcc_dll 目錄生成 wxmsw28u_gcc_custom.dll 這個就是我們需要的。

3.通過SVN更新Code::Blocks原始碼或下載打包的原始碼;

打包過的原始碼可以從這裡下載SVN更新原始碼的方式可以參考這裡我們採用了打包的原始碼 

將原始碼解壓到 H 盤,修改目錄名 codeblocks-12.11release8629 為 codeblocks,以方便操作。

4.載入原始碼專案,設定全域性變數,開始編譯。

用已經安裝好的Code::Blocks開啟專案檔案 H:\codeblocks\src\CodeBlocks.cbp;

會彈出視窗,請求設定環境變數(如果沒有彈出視窗,執行選單 Settings->Global Variables...即可):



可填入:

-g 代表debug(除錯) 或 

-o2 帶表optimised(優化)

然後開始編譯即可。(官方的Wiki中說選擇 Build-target 為 Compiler,這麼做可能會出錯,論壇中的朋友建議為 All)

不出意外的話,最終會看到如下資訊:

|=== Build finished: 0 errors, 438 warnings (7 minutes, 8 seconds) ===|

代表編譯成功。

5.整合資原始檔,創造自己的Code::Blocks發行版。

首先,將 H:\wxMSW-2.8.12\lib\gcc_dll\wxmsw28u_gcc_custom.dll 拷貝到 H:\codeblocks\src\devel 目錄,以保證釋出的版本具有wxWidgets執行環境;

然後,需要整合所有的資原始檔:開啟 命令提示符視窗,進入目錄 H:\codeblocks\src ,執行 update.bat ,等待結束;

第二步生成了新的目錄 H:\codeblocks\src\output ,這裡就是你的發行版了。不過,還沒有配備編譯器奧。

執行一下看看效果吧!


如果在編譯過程中遇到什麼問題,歡迎在此留言討論。