72
原手冊下載:http://www.codeblocks.org/docs/manual_en.pdf 譯者:JGood(http://blog.csdn.net/Jgood ) 譯者言:工欲善其事,必先利其器。一個好的工具能事半功倍。寫程式時,特別是寫 C++程式,大部分人腦子裡想到的第一個工具就是 VisualStudio。不可否認,VS 很好很強 大,用戶體驗非常好。但 VisualStudio 也是有缺點的:它非常龐大;只支持 VC,不支持 其他的編譯器;VS 只能在 windows 下跑,在其他 os 上就無用武之地;VS 是要錢的,而 且費用不非(Express 版本免費)。Code::Blocks 是一個非常優秀的工具,如果您正在尋 找 VisualStudio 之外的,開源、免費、輕便、支持多種編譯器、跨平臺的 C/C++ IDE,那 麼 Code::Blocks 就是一個很好的選擇。

Code Block

  • View
    20

  • Download
    5

Embed Size (px)

DESCRIPTION

Code Block

Citation preview

Page 1: Code Block

原手冊下載:http://www.codeblocks.org/docs/manual_en.pdf

譯者:JGood(http://blog.csdn.net/Jgood )

譯者言:工欲善其事,必先利其器。一個好的工具能事半功倍。寫程式時,特別是寫

C++程式,大部分人腦子裡想到的第一個工具就是 VisualStudio。不可否認,VS 很好很強

大,用戶體驗非常好。但 VisualStudio 也是有缺點的:它非常龐大;只支持 VC,不支持

其他的編譯器;VS 只能在 windows 下跑,在其他 os 上就無用武之地;VS 是要錢的,而

且費用不非(Express 版本免費)。Code::Blocks 是一個非常優秀的工具,如果您正在尋

找 VisualStudio 之外的,開源、免費、輕便、支持多種編譯器、跨平臺的 C/C++ IDE,那

麼 Code::Blocks 就是一個很好的選擇。

Page 2: Code Block

說明:筆者打算用兩篇日誌來完成對 Code::Blocks 手冊前二章的編譯,分別是:使用

篇、外掛程式篇。本文是第一篇:Code::Blocks 使用篇 。原手冊第三章介紹 Code::Blocks

變數、腳本的使用,第四章介紹如何從源碼編譯 Code::Blocks,這兩章內容不是很多,筆

者認為對大部分用戶幫助不是不大,暫不打算翻譯。筆者使用的 Code::Block 版本是 nightly

builds,svn6088(可以在這個位址下載:

http://forums.codeblocks.org/index.php/topic,11875.0.html )。使用的編譯器是

GCC3.4.5。每個版本之間的使用可能會有細微的差別。因為水準有限,難免出錯,歡迎指

正!

Page 3: Code Block

Code::Blocks 手冊 Version 1.0

感謝 CodeBlocks 專案組:

Page 4: Code Block

Anders F. Bjorklund (afb), Biplab Kumar Modak (biplab), Bartomiej wiecki (byo), PaulA.

Jimenez (ceniza), Koa Chong Gee (cyberkoa), Daniel Orb (daniel2000), Lieven de

Cock(killerbot), Yiannis Mandravellos (mandrav), Mispunt (mispunt), Martin Halle

(morten-macy), Jens Lody (jens), Jerome Antoine (dje), Damien Moore (dmoore), Pecan

Heber(pecan), Ricardo Garcia (rickg22), Thomas Denk (thomasdenk), tiwag (tiwag)

Permission is granted to copy, distribute and/or modify this document under the terms

of the GNU Free Documentation License, Version 1.2 or any later version published by

the Free Software Foundation.

1 CodeBlocks 專案管理

Page 5: Code Block

下圖是 CodeBlocks 運行時的使用者介面:

Page 6: Code Block
Page 7: Code Block

• 管理(Management):管理視窗包含 Project 視圖與 Symbols 視圖。Project 視圖顯

示當前 CodeBlocks 打開的所有項目(譯者注:類似與 VS 解決方案資源管理器);

Symbols 視圖顯示專案中的識別字:類,函數、變數等資訊(譯者注:類似與 VS 的

類視圖)。

• 代碼編輯器:支援代碼折疊,關鍵字高亮顯示。上圖 main.cpp 正在被編輯。

• 打開文件列表:顯示當前在代碼編輯器中打開的所有檔列表。上圖中打開的文件

列表為:main.cpp, person.cpp, person.hpp

• 程式碼片段(CodeSnippets):管理常用的程式碼片段、常用檔連結(links to files)

與 URL。可以通過功能表 View->CodeSnippets 來顯示該面板。

• 日誌和其他:這個視窗用於輸出日誌資訊,顯示查詢結果等等。

• 狀態列提供了以下這些資訊:

Page 8: Code Block

• 編輯器中打開檔的絕對路徑;

• 檔的編碼類型;

• 游標所在的行與列;

• 當前的鍵盤模式(insert 或者 overwrite);

• 當前的檔狀態。被修改過的(但尚未保存)檔將被標記為“modified”,否則

這裡為空;

• 檔操作的許可權。如果檔是唯讀的,這裡將會顯示“Read only”,在 Open files

list 中,該檔會使用一個加瑣的圖示來顯示;

• 個性化配置名稱;

CodeBlocks 提示了非常靈活和強大的專案管理功能。下文將介紹項目管理的一些常用

功能。

Page 9: Code Block

1.1 項目視圖(Project View)

在 CodeBlocks 中,Project 的原始檔案(如 C/C++的原始檔案及其對應的標頭檔)和

編譯屬性設置資訊都保存在<name>.cbp 文件裡。可以通過功能表[File–>Project]啟動工

程創建嚮導來創建新的 Project,然後通過管理視窗的上下文功能表[Add files](譯者注:

上下文功能表,指當前視窗中選中目標專案,然後右鍵顯示的功能表)向 Project 中添加

Page 10: Code Block

檔。CodeBlocks 會自動根據檔的尾碼將它們放入不同的類別資料夾中(譯者注:這個資

料夾是虛擬的,實際並不存在)。下面是默認的分類:

• Sources:包含原始檔案,尾碼為*.c、*.cpp;

• ASM Sources:包括彙編原始檔案,尾碼一般為*.s、*.S、*.ss、*.asm;

• Headers:包括標頭檔,尾碼一般為*.h、 *.hpp;

• Resources:包括資源檔,尾碼一般為*.res、*.xrc;

通過管理視窗的上下文功能表[Project tree –>Edit file types & categories],使用者可

以新建自訂的檔類別,並為其相應的尾碼。例如,如果你希望*.ld 的檔放到 Linkerscript

的分類裡,你只需新建類別 Linkerscript,並為它指定*.ld 尾碼即可。

Page 11: Code Block

提示: 如果你取消選中管理視窗上下文功能表的[Project tree–>Categorize by file

types]選項,所有的專案檔案將會按它們在檔案系統中的位置來顯示。

1.2 項目備註(Notes for Projects)

可以給 CodeBlocks 專案添加一些備註,用於對專案進行概要的描述與說明,這些資訊

有助於其他成員迅速的瞭解項目。備註資訊被保存在專案工程檔裡,並可以設置為隨著專

案的啟動而顯示。如圖:

1.3 專案範本

Page 12: Code Block
Page 13: Code Block

CodeBlocks 支援許多不同類型的專案範本,它們會在新建專案的時候顯示,創建新專

案的時候往往從這些範本中選擇(如上圖:)。使用者可以自訂工程範本。工程範本保存

編譯器的類型、編譯選項、資源的配置等相關資訊。專案範本保存在 Documents

andSettingsn/<user>/Application Data/codeblocks/UserTemplates 目錄中。如果你希望

該工程範本被本機的所有用戶使用,必須把對應的範本檔拷貝到CodeBlocks的安裝目錄。

範本在 CodeBlocks 重啟之後生效,通過功能表[New->Project->User templates]就可以看

到自訂的範本。

提示: 使用者可以通過右鍵選中工程嚮導中的範本對其進行編輯。如下圖:

Page 14: Code Block

1.4 從編譯模式創建專案(Create Projects from Build Targets)

一個專案往往有不同的編譯模式,最常見的是 Release 和 Debug。不同的編譯模式表

示用於構建當前專案所使用的不同編譯器選項、調試資訊或者依賴的檔。每一種編譯模式

都可以被保存成獨立的工程檔。通過上下文功能表[Project->Properties],在 Build Targets

標籤中點擊“Create project from target”按鈕來生成對應編譯模式的工程檔,如圖:

Page 15: Code Block
Page 16: Code Block

1.5 編譯模式(Virtual Targets)

一個專案可以有多種不同的編譯模式,最常用的編譯模式為“Debug”和“Release”。

“Debug”模式下會包含許多 Debug 資訊,而“Release”模式下沒有這些資訊。也可以

通過上下文功能表[Project->Properties->Build Targets]添加其他的編譯模式。編譯模式將

顯示在工具列中:

1.6 預生成和生成後步驟 (Pre- and Postbuild setps)

Page 17: Code Block

Code::blocks 允許在項目生成前和生成後執行額外的操作,這些操作分別被稱為預生成

(Prebuilt)或生成後(Postbuilt)步驟。下面是典型的生成後步驟:(譯者注:筆者對

低層的東西知道的不多,不是很清楚下面這些步驟的意思。)

Creating an Intel Hexformat from a nished object

Manipulating objects by objcopy

Generating dump les by objdump

1.7 為構建目標添加腳本(Adding Scripts in Build Targets)

Code::Blocks 允許使用腳本來調用功能表命令,控制專案的生成。

提示: 腳本可以被包含到一個構建目標(Build Target)中。

Page 18: Code Block

1.8 解決方案(Workspace)與專案依賴

CodeBlocks 可以同時打開多個專案,通過功能表[File->Save workspace]把它們集成到

一個解決方案中,並生成一個對應的解決方案檔(<name>.workspace)。下次打開解析

方案文件(<name>.workspace)時,這些項目會被一起載入進來。

複雜的軟體系統通常由不同的模組、元件以獨立的工程項目組成,它們之間往往存在

依賴關係。

例如:專案 A 以庫(library)的形式提供一些公用函數給其他專案調用,如果專案 A 中的

原始程式碼被修改,這個庫就得重新編譯。專案 B 使用專案 A 中實現的函數,那麼專案 B

就依賴項目 A。CodeBlocks 把這些專案依賴的資訊保存到解決方案檔中,所以解決方案中

的工程可以各自獨立的創建、編譯而不相互影響(譯者注:由解決方案檔來維護各項目的

Page 19: Code Block

依賴關係)。這些依賴關係會決定專案的生成順序。通過功能表[Project->Properties],然

後選擇[Project’s dependencies]按鈕來設置專案之間的依賴關係。如下圖:

Page 20: Code Block
Page 21: Code Block

1.9 包含彙編檔

略。

1.10 代碼編輯器與工具 (Editor and Tools)

1.10.1 默認代碼 (Default Code)

公司的編碼規範往往要求原始檔案有統一的佈局(譯者注:例如原始檔案的開始處以

統一的格式給出檔創建的時間、作者、實現的功能描述等相關資訊)。CodeBlocks 允許

預定義一些內容,當新建 C/C++檔時這些內容會自動添加到檔的開始處。這裡把預定義的

內容稱為 default code。可以通過功能表[Settings–>Editor–>Default Code]來設置

Page 22: Code Block

defaulg code,通過功能表[File->New->File]創建的代碼檔將自動添加上 default code。例

如:

/*************************************************************************

* Project:

* Function:

*************************************************************************

* $Author: mario $

* $Name: $

*************************************************************************

*

* Copyright 2007 by company name

Page 23: Code Block

*

************************************************************************/

1.10.2 縮寫(Abbreviation)

定義一個常用的代碼片斷[typing],並給它提供一個名字[Abbreviation],在寫程式的時

候,只要給出這個名字,然後按快速鍵 Ctrl + J,CodeBlocks 就會用預先定義的代碼片斷

來替換該名字。(譯者注:VS 中也有類似的功能,在 C#程式時,只要寫出關鍵字 for,

然後連續按兩次 Tab 鍵,編輯器會自動生成 for 語句的框架,是不是很方便?~_~)。通

過功能表[Settings->Editor]來設置 Abbreviation,如下圖:

Page 24: Code Block

abbreviation 也支援參數變數(Parametrisation)(如:$NOW 表示當前時間)。如:

Page 25: Code Block

-->

1.10.3 個性化(Personalities)

CodeBlocks 的配置資訊被作為應用程式資料而保存在 codeblocks 資料夾的

<user>.conf 文件中。該設定檔中保存的資訊包括:上次打開的項目、代碼編輯器的設置、

符號欄顯示等等。默認的個性化設置被保存在 default.conf 文件中。通過命令列參數

-personality=myuser 來調用 CodeBlocks,配置資訊將被保存到 myuser.conf 中。如果該

檔不存在,系統將自動創建它。如果以命令列的方式來啟動 CodeBlocks,並傳遞命令參

Page 26: Code Block

數--personality=ask,將會顯列出當前所有的修改化配置清單,使用者選擇其一啟動

CodeBlocks。如下圖:

1.10.4 設定檔(Configuration Files)

Page 27: Code Block

CodeBlocks 的配置資訊保存在 codeblocks 目錄下的 default.conf 文件中。當使用個性

化設置的時候,配置資訊將被保存到<personality>.conf 文件裡。

cb_share_conf(一個輔助工具,可以在 CodeBlocks 安裝目錄裡找到)被用來管理與

保存這些設置資訊。

如果你想為電腦的不同帳戶定義一個公用的默認設置,defual.conf 檔應該被保存到

/Documents and Settings/Default User/Application Data/codeblocks。CodeBlocks 在第

一次啟動的時候,會將該設定檔拷貝到當前帳戶的 application data 目錄下(並作為當前

帳戶的設定檔)。

如果想在 usb 設備上創建一個綠色版本號的 CodeBlocks,請執行下面步驟:將

CodeBlocks 安裝目錄拷貝到 usb 設備上,將設定檔 default.conf 拷貝到該目錄中,該設定

Page 28: Code Block

檔將被用於全域的設置。確保系統有許可權對該檔進行寫入,否則 CodeBlocks 對設定檔

的修改將不會被保存。

1.10.5 導航與搜索(Navigate and Search)

CodeBlocks 提供了很多方法用於檔和函數之間導航。書簽就是最常用的一種方式。通

過快速鍵 Ctrl + B 在原始檔案中設置/刪除一個書簽,通過 Alt + PgUp 或 Alt + PgDn 在不

同的書簽之間跳轉。

在管理視窗的 Project 視圖中選中解決方案或專案,右鍵點擊在彈出功能表中選擇[Find

file],輸入你查找的檔案名稱,然後回車,該檔將被選中(如果檔存在的話),再按回車,

編輯器就會打開該檔。如下圖:

Page 29: Code Block

在 CodeBlocks 中,你可以很容易的在標頭檔與原始檔案之間導航:

1. 將游標置於標頭檔被包含處(例如:#include “header.hpp”),右鍵選擇性

“open include file”,編輯器將打開該包含檔。(譯者注:可以在 VS 中使用快速鍵 Ctrl

+ Shift + G 實現同樣的操作。這個功能非常方便,特別是要查看原始程式碼時。)

Page 30: Code Block

2. 通過右鍵功能表的[Swap header/source],在標頭檔與原始檔案之間切換。

3. 選中一個定義(如變數名,類型名等等),在右鍵功能表中選擇[Find declaration],

編輯器就會打開該定義的聲明。(譯者注:可以使用右鍵功能表的[Find implementation]

定位到函數的實現處,在 VS 中使用快速鍵 F12 實現同樣的操作。這也是一個非常方便的

功能。)。

Page 31: Code Block

CodeBlocks 提供多種方式用於對單個檔或整個目錄進行搜索。通過功能表

[Search->Find]或[Search –> Find in Files]來打開搜索對話方塊。

Alt + G 和 Ctrl + Alt + G 這兩個快速鍵用於打開 檔/函數 跳轉對話方塊,只要輸入檔

/函數的名稱,就可以很方便的跳轉到指定檔或函數。檔案名/函數名搜索還支援 * 和 ?

等能配符。(譯者注:可以使用 Visual Assist 外掛程式在 VS 中實現類似的功能。這兩個

功能真的很方便實用。)

Page 32: Code Block

提示: 使用 Ctrl + PgUp 和 Ctrl + PgDn 可以在前後函數之間跳轉。

在文字編輯器中,使用快速鍵 Ctrl + Tag 可以在當前所有打開的檔之間跳轉。(譯者注:

VS 也有類似的功能,而且快速鍵也是 Ctrl + Tag,這是巧合嗎?)

Page 33: Code Block
Page 34: Code Block

顯示行號。通過功能表[Settings->General Settings],選中[Show line numbers]來顯

示行號。使用快速鍵 Ctrl + G 可以快速的跳轉到指定行。

1.10.6 符號視圖(Symbol view)

CodeBlocks 管理視窗提供的符號視圖,以樹的形式顯示(導航)C/C++原始檔案中的

類、函數、變數定義。可以選擇符號顯示的區域是:當前檔、當前專案、整個解決方案。

(譯者注:與 VS 的類視圖面板實現類似的功能。)

Page 35: Code Block

提示: 在搜索輸入框中輸入符號的名稱,符號流覽器將會過濾不符條件的符號。

Page 36: Code Block

符號視圖將符號分為如下分類:

• Global functions: 全域函數;

• Global typedefs: 通過 typedef 定義的別名;

• Global variables:全域變數;

• Preprocessor symbols: 通過#define 巨集定義的預處理指示符;

結構和類的定義顯示在 pre-processor symbols 下面。如果一個分類被選中,屬於該分

類的識別字將顯示在視圖的下半部分。按兩下這些識別字,代碼編輯器將定位到定義這些

識別字的檔所在處。

1.10.7 集成外部的幫助文檔

Page 37: Code Block

CodeBlocks 支持添加外部的幫助文檔集成到開發環境中。通過功能表

[Settings->Environment]來設置。把你選擇的 chm 格式的文檔以添加到 Help Files,並將

其作為默認的幫助文檔,在編輯器中選擇一個函數,對應的文檔就會出現通過快速鍵F1。…

1.10.8 集成外部工具

通過功能表[Tools->Configuration Tools–>Add],把外部工具集成到 CodeBlocks 開發

環境中。這些外部的工具允許以參數的形式訪問 CodeBlocks 的內建(Built-in)變數(如當

前專案所在的資料夾${PROJECT_DIR})。利用這個功能,我們給 CodeBlocks 添加一個功

能表項目:打開當前專案所在的資料夾。請看圖:

Page 38: Code Block
Page 39: Code Block

(譯者注:這是一個非常實用的功能。利用這個功能,我在我的 CodeBlocks 中,添加了

三個我最常用的功能表項目:使用Notepad++打開當前文件;打開當前專案所在的資料夾;

以 Dos 視窗打開當前資料夾。爽歪歪~~)

1.11 使用 CodeBlocks 的小提示(Tips)

這節我們將展示一些 CodeBlocks 非常有用的提示。

1.11.1 修改跟蹤(Tracking of Modifications)

Page 40: Code Block

CodeBlocks 通過行號旁邊的小堅條顏色來跟蹤原始檔案的修改。未保存的修改行將被

標記為黃色,而已保存的修改行標記為綠色。你可以通過功能表[Search->Goto next

changed line]或者[Search->Goto previous changed line]在修改內容之間導航(對應的快

速鍵是 Ctrl + F3 和 Ctrl + Shift + F3)。(譯者注:VS 也提供類型的功能。)

Page 41: Code Block

可以通過功能表[Settings->Editor->Margins and caret],取消選中[Use Changebar]來取

消該功能。

提示: 如果檔被關閉,記錄在該檔上的 undo/redo 資訊和修改標識(changebars)將會

清空。如果檔處理打開狀態,可以通過功能表[Edit->Clear changes history]或者右鍵功能

表相應選項來顯式地清空這些資訊。

1.11.2 與其他應用程式交互

CodeBlocks 能夠在運行時與其他應用程式進行交互。windows 下通過 DDE(Dynamic

Data Exchange)實現這種進程間的交互,而在其他作業系統下,基於 TCP 來實現交互。

Page 42: Code Block

以下語法的命令可以發送給 CodeBlocks 運行實例:

[<command>(“<parameter>”)

當前可以使用的命令:

Open: 命令[Open(“D:/Temp/test.txt”)],在 CodeBlocks 實例中(或者啟動新的

CodeBlocks 進程,如果需要的話)打開一個檔。

OpenLine:命令[OpenLine(“D:/Temp/test.txt:10”)],在 CodeBlocks 中打開檔,並定

位到指定行數,冒號後面的數字用於指定行號。(譯者注:不是很明白原文的意思:This

command opens a le at a given line number in a CodeBlocksi nstance.)

Raise:讓 CodeBlocks 實例獲得焦點。不就給該命令提供參數。

Page 43: Code Block

1.11.3 配置環境變數

作業系統的配置資訊被定義在環境變數中。例如環境變數 Path 包含一個編譯器的安裝目

錄路徑,作業系統在運行期間都可以隨時訪問該環境變數。如果同一編譯器的另一個版本

被安裝,就可能會發生錯誤,如:調用的編譯器版本不正確。

有時候因為專案的需要,必須在同一機器上安裝同一編譯器的不同版本。為了避免上述

錯誤的發生,可以在專案啟動之前修改環境變數。顯然,這個方法很容易出錯,很不靈活。

基於這個問題,CodeBlocks 提供了一個簡單的解決方法:創建不同版本的、只能在

CodeBlocks 內使用的環境變數,然後根據專案的需要選擇適當的版本環境變數。通過功

能表[Settings->Environment],在 Environment Varibales 面板中點擊 Create 按鈕創建不

同版本的環境變數,如下圖:

Page 44: Code Block
Page 45: Code Block

1.11.4 切換佈局

CodeBlocks 可以根據手頭任務的需要選擇不同的配置/視圖,並保存這些配置/視圖。預

設情況下這些配置保存在 default.conf 文件裡。以命令列方式啟動 Cdoeblocks,並傳遞

--personality=ask 參數,就可以在列出的個性化配置清單中選擇一個視圖啟動。有時候,

你可能希望在應用程式的使用過程中切換佈局,如編碼模式與調試模式下可能需要不同的

佈局。CodeBlocks 提供了一種機制來實現這種需求,通過功能表[View->Layouts->Save

current],並輸入佈局的命名,保存佈局。通過[View->Layouts->Layout name]來切換佈

局。(譯者注:筆者使用的版本,通過[View->Perspectives]來保存/切換佈局,如下圖:)

Page 46: Code Block

1.11.5 項目切換

多個專案同時在 CodeBlocks 中打開時,用戶希望快速的在這些項目之間切換。

CodeBlocks 提供一組快速鍵來實現:

• Alt + F5 :將視圖中前一個項目設為啟動(Active)項目。(譯者注:類似于 VS 中將某

個專案設為啟動專案。)

• Alt + F6: 將視圖中後一個項目設為啟動項目。

• F11: 在編輯器中切換原始檔案(name.cpp)和標頭檔(name.h)。

Page 47: Code Block

1.11.6 擴展編譯器設置

在編譯一個專案的過程中,編譯資訊將會顯示在消息視窗的 Build Log 視圖中。如果你想

獲取更詳細的編譯資訊,通過功能表[Settings->Compiler and Debugger],在 Other

Settings 面板中選擇 Compiler logging 下拉清單項:

Page 48: Code Block
Page 49: Code Block

“Full command line”選項意味著將在 Build Log 視圖中顯示所有的編譯資訊。可以將

這些日誌資訊保存為HTML檔,通過選中”Save build log to HTML file when finished’。

另外,通過選中”Display build process bar”,CodeBlocks 支援在 Build Log 視圖中顯示

編譯進度。

1.11.7 編輯器縮放

CodeBlocks 提供了一個非常高效的編輯器。這個編輯器允許你縮放打開文本的字體大小。

如果你的滑鼠有滾輪,你只要按住 Ctrl 鍵,同時滾支滑鼠滾輪,就可以實現文本的縮放。

提示: 通過功能表[Edit->Special commands->Zoom->Reset]來重置縮放。

1.11.8 自動換行模式

Page 50: Code Block

在 CodeBlcoks 中打開一個文字檔,使用自動換行模式可以將很長的行以多行的形式顯示

在一個螢幕內,有利於編輯。通過功能表[Settings->Editor->Other Options],選中 Word

warp 來啟動自動換行模式。…

1.11.9 塊選文本

CodeBlocks 支援在代碼編輯器中塊選文本。按住 Alt 鍵的同時按住滑鼠左鍵在編輯器選

擇一塊區域。如果你想選擇陣列的幾列進行複製和粘貼,這個功能是非常有用的(譯者注:

VS 也提示類似的功能,快速鍵也一樣。)。如圖:

Page 51: Code Block

1.11.10 代碼折疊

CodeBlocks 支援代碼折疊,允許將函數、類的實現折疊起來。

提示: 通過功能表[Settings->Editor->Folding],可以設置代碼折疊的樣式和層次限制

(depth limit)。

1.11.11 自動完成

在 CodeBlocks 中打開一個項目時,編譯器的相關目錄(include 目錄)與專案的原始檔

案/標頭檔將被解析,提取有關類型定義、函數、巨集等的資訊,CodeBlocks 使用這些資

訊來實現自動完成功能。通過功能表[Settings->Editors->Code completion]啟用該功能,

通過快速鍵 Ctrl + Space 來顯示提示資訊(譯者注:預設的快速鍵 Ctrl + Space 不適合

Page 52: Code Block

中國人的鍵盤習慣,建議改成其他快速鍵。)。通過[Settings->Editor->Syntax highlighting],

你可以添加自訂的關鍵字。

1.11.12 查找破損文件(Find broken files)

如果一個檔已經從磁片中刪除,但它仍然被包含在專案檔案(project.cbp)中(譯者注:專

案的檔資訊保存在*.cbp 文件裡。),這個檔在專案面板中顯示一個破損符號(如下圖)。

應該通過上下文功能表[Remove file from project]將它從專案中移除。

Page 53: Code Block

一個大的工程可能包含許多子資料夾,搜索破損檔會非常花費時間。CodeBlocks 提供

ThreadSearch 外掛程式來解決這個問題。在 ThreadSearch 中輸入要查找的運算式,並設

置查找的範圍:“Project files”或者“Workspace files”,ThreadSearch 將會分析所有

包括在項目或者解決方案中的檔。當 ThreadSearch 找到一個跋損檔的時候,會發出一個

檔丟失的錯誤。

1.11.13 包含庫

在專案的編譯選項中,你可以通過”Add”按鍵添加專案所使用的庫。庫可以以絕對路徑

的形式給出,也可以只給出名稱而無需提供 lib 首碼和檔副檔名。

例如:存在這樣的一個庫檔:<path>/libs/lib<name>.a,只要給出<name>,連結器就可

以找到對應的庫檔。

Page 54: Code Block

1.11.14 物件連結順序

在編譯過程中,原始檔案 name.c/cpp 將會被編譯成目的檔案 name.o,然後連結器把獨

立的目的檔案連結成可執行檔 name.exe(對於嵌入式系統,將連結成 name.elf)。這種

情況下,可能需要預先定義物件連結的順序。在 CodeBlocks 中,可以設置相關原始檔案

的優先順序來實現。在上下文功能表中選擇[Properties],在 Build 標籤中定義。較低優先

順序使檔較先連結。

1.11.15 自動保存

CodeBlcoks 允許自動保存當前正在編輯的檔和專案,或者對它們進行備份。可以通過功

能表[Settings->Environment->Autosave]來啟動該功能。

1.11.16 檔副檔名設置

Page 55: Code Block

在 CodeBlocks 中,可以選擇多次方式來處理檔不同尾碼的檔,可以在功能表

[Settings->Environment settings->Files extension handling]設置相應的處理方式:

“Launch an external program”指定外部程式來打開檔;“Launch the associated

application”使用系統預設程式來打開檔;“Open it in Code::Blocks editor”使用

Code::Blocks 編輯器來打開檔。如下圖:

Page 56: Code Block

1.12 通過命令列操作 CodeBlocks

CodeBlocks 能夠通過命令列來運行。在這種情況下,需要通過一些選項來控制專案的構

建過程。因為 CodeBlocks 是 scriptable 的,所以 CodeBlocks 專案的構建可以集成到你自

己的工作過程中。

codeblocks.exe /na /nd --no-splash-screen --built <name>.cbp --target=’Release’

<filename> 指定 CodeBlock 專案檔案(*.cbp)或解決方案文件(*.workspace)。

--file=<filename>[:line]:使用 CodeBlocks 打開指定檔。可選的行號指示代碼編輯器跳轉

到該行。

/h, --help:顯示説明資訊。

Page 57: Code Block

/na, --no-check-associations:不執行檔關聯檢查。(windows only)

/nd, --no-dde:不啟動 DDE 服務。(windows only)

/ni, --no-ipc:不啟動 IPC 服務。(Linux and Mac only)

/ns, --no-splash-screen:應用程式啟動的時候,不顯示啟動畫面。

/d, --debug-log:顯示應用程式的調試日誌

--prefix=<str>:設置共用資料檔案夾的首碼

/p, --personality=<str>, --profile=<str>:設置要使用的個性化配置。你可以使用“ask”參

數來列出可選擇的個性化配置。

Page 58: Code Block

--rebuild:清理並重新編譯工程或解決方案。

--build:編譯工程或解決方案。

--target=<str>:設置編譯模式,如:--target=’Release’

--no-batch-window-close:編譯完成的時候,不關閉日誌視窗。

--batch-build-notify:編譯完成的時候顯示提示資訊

--safe-mode:啟動的時候,所有外掛程式都不可用。

> <build log file>:重定向標準輸出到日誌檔。這是標準 DOS/*nix shell 的輸出重定向,

並非 CodeBlocks 內置選項。

Page 59: Code Block

1.13 快速鍵

在 IDE 中使用快速鍵比使用滑鼠更為高效。下表給出 CodeBolcks 默認的快速鍵。(譯者

注:筆者將 CodeBlocks 中的快速鍵設置為與 VS 大體一致,使用 CodeBlocks 時非常順手。)

Function Shortcut Key

Undo last action Ctrl + Z

Redo last action Ctrl + Shift + Z

Cut selected text Ctrl + X

Copy selected text Ctrl + C

Paste text from clipboard Ctrl + V

Page 60: Code Block

Select all text Ctrl + A

Swap header / source F11

Comment highlighted code Ctrl + Shift + C

Uncomment highlighted code Ctrl + Shift + X

Duplicate line caret is on Ctrl + D

Auto-complete / Abbreviations Ctrl + Space / Ctrl + J

Show call tip Ctrl + Shift + Space

Swap line caret is on with line above it Ctrl + T

Toggle bookmark Ctrl + B

Goto previous bookmark Alt + PgUp

Page 61: Code Block

Goto next bookmark Alt + PgDown

Toggle current block folding F12

Toggle all folds Shift + F12

CodeBlocks 代碼編輯器元件提供的快速鍵,這些快速鍵不能重新綁定(rebound)。

Function Shortcut Key

Magnify text size. Ctrl + Keypad "+"

Reduce text size. Ctrl + Keypad "-"

Restore text size to normal. Ctrl + Keypad "/"

Cycle through recent files. Ctrl + Tab

Page 62: Code Block

Indent block. Tab

Dedent block. Shift + Tab

Delete to start of word. Ctrl + BackSpace

Delete to end of word. Ctrl + Delete

Delete to start of line. Ctrl + Shift +

BackSpace

Delete to end of line. Ctrl + Shift + Delete

Go to start of document. Ctrl + Home

Extend selection to start of document. Ctrl + Shift + Home

Go to start of display line. Alt + Home

Page 63: Code Block

Extend selection to start of display line. Alt + Shift + Home

Go to end of document. Ctrl + End

Extend selection to end of document. Ctrl + Shift + End

Go to end of display line. Alt + End

Extend selection to end of display line. Alt + Shift + End

Expand or contract a fold point. Ctrl + Keypad "*"

Create or delete a bookmark. Ctrl + F2

Go to next bookmark. F2

Select to next bookmark. Alt + F2

Find selection. Ctrl + F3

Page 64: Code Block

Find selection backwards. Ctrl + Shift + F3

Scroll up. Ctrl + Up

Scroll down. Ctrl + Down

Line cut. Ctrl + L

Line copy. Ctrl + Shift + T

Line delete. Ctrl + Shift + L

Line transpose with previous. Ctrl + T

Line duplicate. Ctrl + D

Find matching preprocessor conditional, skipping nested ones. Ctrl + K

Select to matching preprocessor conditional. Ctrl + Shift + K

Page 65: Code Block

Find matching preprocessor conditional backwards, skipping

nested ones. Ctrl + J

Select to matching preprocessor conditional backwards. Ctrl + Shift + J

Previous paragraph. Shift extends selection. Ctrl + [

Next paragraph. Shift extends selection. Ctrl + ]

Previous word. Shift extends selection. Ctrl + Left

Next word. Shift extends selection. Ctrl + Right

Previous word part. Shift extends selection. Ctrl + /

Next word part. Shift extends selection. Ctrl + /

Files

Page 66: Code Block

Function Shortcut Key

New file or project Ctrl + N

Open existing file or project Ctrl + O

Save current file Ctrl + S

Save all files Ctrl + Shift + S

Close current file Ctrl + F4 / Ctrl + W

Close all files Ctrl + Shift + F4 / Ctrl + Shift + W

CodeBlocks 的 Tab 元件所提供的快速鍵,這些快速鍵不能重新綁定(rebound)。

Function Shortcut Key

Page 67: Code Block

Activate next open file Ctrl + Tab

Activate previous open file Ctrl + Shift + Tab

View

Function Shortcut Key

Show / hide Messages pane F2

Show / hide Management pane Shift + F2

Move project up (in Project tree) Ctrl + Shift + Up

Move project down (in Project tree) Ctrl + Shift + Down

Page 68: Code Block

Activate prior (in Project tree) Alt + F5

Activate next (in Project tree) Alt + F6

Zoom in / out Ctrl + Roll Mouse Wheel

Focus editor CTRL + Alt + E

Search

Function Shortcut Key

Find Ctrl + F

Find next F3

Page 69: Code Block

Find previous Shift + F3

Find in files Crtl + Shift + F

Replace Ctrl + R

Replace in files Ctrl + Shift + R

Goto line Ctrl + G

Goto next changed line Ctrl + F3

Goto previous changed line Ctrl + Shift + F3

Goto file Alt + G

Goto function Ctrl + Alt + G

Goto previous function Ctrl + PgUp

Page 70: Code Block

Goto next function Ctrl + PgDn

Goto declaration Ctrl + Shift + .

Goto implementation Ctrl + .

Open include file Ctrl + Alt + .

Build

Function Shortcut Key

Build Ctrl + F9

Compile current file Ctrl + Shift + F9

Run Ctrl + F10

Build and Run F9

Page 71: Code Block

Rebuild Ctrl + F11

Debug

Function Shortcut Key

Debug F8

Continue debugging Ctrl + F7

Step over a code block F7

Step into a code block Shift + F7

Step out of a code block Ctrl + Shift + F7

Page 72: Code Block

Toggle breakpoint F5

Run to cursor F4

Previous error Alt + F1

Next error Alt + F2