Codeblocks 正式的標記名稱為 Code::Blocks 是一個簡單易用的 C, C++ 整合開發平台軟體 (IDE),但無法建置 GUI 圖形化介面的應用程式。
一、安裝 Codebloks
一-01-Linux 中安裝 Codebloks
在 Ubuntu 中要安裝 Codeblocks 可下達指令:sudo apt-get install codeblocks
在 Ubuntu 18.04 中安裝的 Codeblocks將是 版本 16,而在 Ubuntu 20.04 中安裝的 Codeblocks 將是版本 20。
請參閱「Codeblocks 官方網站」 以下載各種作業系統 (Windows, Linux, Mac OS) 版本的安裝檔。
一-02-Windows 中安裝 Codeblocks
請詳閱「Codeblocks for Windows」文章的說明。
二、設定 Codeblocks Editor Fonts
預設 Codeblocks 的文字編輯器 (Editor) 的字型 Font 很小,可點按 Settings-->Editor-->General Settings ,並在 Fonts 區段中,在設定的欄位中點按 choose 按鈕進行字型與大小的設定,通常可選用 16以上的字型,然後點按 Select ,再點按 OK 儲存所做的設定。
三、設定 Codeblocks 中 Message log console 與程式執行時獨立 console 的字型大小
設定 Message log console 字型的大小,可點按 Settings-->Environment Settings -->View,在 Message logs' font size 欄位中設定字型的大小,可設定 12 以上的字型。
設定 獨立 output console 視窗字型的大小,可點按 Settings->Environment Settings-->General Settings ,在 Terminal to launch console program 欄位中,選擇 gnome-terminal -t $TITLE -x,此時預設的字型就比較大了。
四、程式專案 (Project) 的概念
Codeblocks 主要是用來建立 C++ 程式,而要建立一個可以被機器執行的程式,基本上包括以下階段:編輯建立文字程式原始檔 (source code)、編譯/翻譯 (compile)成目的檔 (object code)、產出可執行的機器碼檔 (executable code)。
程式原始檔 (source code/file) 通學只是一個普通的文字檔 (text file) ,是由人們所建立編輯的,只有人們看的懂,但是機器看不懂,所以必須要將文字式的原始程式檔進行翻譯成為機器所看得懂的程式檔。
目的檔 (object code/file) 是將文字式的原始程式檔編譯或翻譯 (compile) 後的一個檔案,這個目的檔主要是一個中介檔 (intermediate file) 或是準可執行檔 (quasi-executable code/file),已是屬於機器碼檔 (machine code)。也就是說,一個機器碼檔基本上是以機器可以辨認的語言或指令所組成的一個檔案。但是此一目的檔尚未可以被所使用的機器所執行,因為要想要讓一個目的檔被執行,還要配合該機器所處的作業系統環境與配合的相關函數庫,才能夠在該機器上所執行。亦即,目的檔基本上較屬於中立性的或通用性的檔案,而可執行檔是機器導向 (machine-oriented) 或機器相關的 (machine-depended)。可執行檔通常是以二位元 (binary) 的型式組成,所以也常被稱為二元檔 (binary code/fiel)。
當編譯 (compile) 一個原始程式檔時,必須要使用到文字原始檔以外的其他檔案,可以是其他的文字式原始檔,以及函數庫。其中最重要的就是函數庫 (library),這些函數庫大都是 C++ 程式語言所內建的,當然使用者也可以自建自己所屬的函數庫,這些函數庫皆以檔案的型式存在。
由此可知,要翻譯一個文字式原始程式檔,就必須要知道如格存取這些文字原始檔以及函數庫,同時也要知道將編譯後的目的檔與可執行檔要存放在一處。
一個 IDE (Integrated Development Environment) 整合開發環境平台軟體,就是用來將上述的多個原始程式檔、函數庫檔、目的檔、二元可執行檔進後統合的管理,這一個統合管理的單元就被稱為專案 (project)。Codeblocks 是一個 IDE 的軟件,所以自然也是以建立專案的方式來建立與管理一個 C++ 的程式專案。建置程式的 IDE 軟件有很多種,包括,Codeblocks, eclipse, visual studio c# (Windows), visual studio code, netbeans,其中,除了 Visubal studio c# 只能在 Windows 作業系統下執行外,其他的 IDE 皆有 Linux 及 Windows 的版本。又,visual studio code 是 visual studio C# 的簡要版,無法建置程式的 GUI 介面。Codeblocks 也只能建立輸出至 Console 的文字介面程式,無法建置 GUI 輸出介面的程式。
五、Codeblocks project 的管理
五-01- Codeblocks project 的建立過程
要建立一個 C++ 的程式專案,首先要點按「File/New/Project」,在 Projects 的項目下,在其右邊的區塊中再點按「Console Application (文字輸出介面應用程式)」。原本 console 的意思是「監控畫面」的意思,最原始的 console 只能輸出文字無法輸出顯示圖形,所以延用到現在,console 所代表的就是文字輸出的介面。目前在 Linux 與 Winodws 的終端機 (terminal) 就是屬於 console 的應用程式。
接著會出現一個建立專案的簡要說明訊息視窗,直接點按「Next」,接著會出現尋問要建立的程式語言類別為何,一般出現的列別選項是 C 與 C++,通常是選 C++,按著再點按「Next」。
此時會出現設定程式專案的相關名稱與相關存放資料的目錄,包括:
- Project Title:用以設定專案的名稱 (抬頭),最好用英文名稱,不要使用中文名稱,例如, test01。
- Folder to create project in:用以設定儲存專案的主目錄,可點按下方欄位中最右邊的白色按鈕來選定想要儲存專案的目錄。例如,/home/alex/codeblocks++/
- Project filename:指用以設定專案檔的檔名,此一專案檔的主檔名預設與 Project Title 是相同的,而附檔名預設為 cbp 意思為 codeblocks project,例如,因為 Project Title 為 test01,所以Project filename 為 test01.cbp
- Resulting filename:指最終完整的專案檔案路徑名稱,也就是經由上述欄位的設定後,所產生的專案檔案案完整路徑,例如:/home/alex/codeblocks++/test01/test01.cbp,亦即 test01的專案會建立一個專案的主目錄名稱為 test01,在此 test01目錄下,存放一個專案檔案名稱為 test01.cbp 的專案檔案。
接著再點按「Next」,此時出現要選定 complier (編譯器) 的系統程式,以及設定 Debug (除錯) 與 Release (發表版本) 的目錄。
- Complier:要選定所要使用的 C++ Complier,此處 Codeblocks 系統會自動掃描該作業系統已安裝的 complier 為何,一般大都會安裝 GNU GCC Complier (安裝該 gcc 的指令為:sudo apt-get install build-essential),所以就選用此一 gcc complier。要選用某一 C++ Compiler 要先點按「Settings-->Compiler-->Global compiler settings」進行設定該 Compiler 正確的安裝目錄,請詳閱「Codeblocks for Winodws」文章的說明。又,在Linux 中,因為要安裝 Codeblocks 之前,通常要先安裝 GNU GCC (指令為: 安裝指令為:sudo apt-get install beuild-essential),所以 Linux 版豆 Codeblocks 就會自動偵測到正確的 GNU GCC 安裝目錄,所以不用再重新設定該安裝的目錄了。
- Debug folders:要設定用除錯用的 output dir 以及 objects output dir 的目錄,通常皆使用預設的目錄不進行更改。
- output dir:亦即要選定二元可執行檔的除錯目錄,預設為 bin/Debug/,此一目錄下所儲存的就是最終的二元可執行檔。
- objects output dir:亦即要選定目標檔的除錯目錄,預設為 obj/Debug/,此一目錄所儲存的就是程式的目的檔,因為預設的主程式名稱為 main.cpp,所以其目的檔變成 main.o ,其中 o 的意思為 object。
- Release folders:要設定發表版本用的 output dir 以及 objects output dir 的目錄,通常皆使用預設的目錄不進行更改。
- output dir:亦即要選定二元可執行檔的發表版本目錄,預設為 bin/Release/
- objects output dir:亦即要選定目標檔的發表版本目錄,預設為 obj/Release/
最後點按「Finish」完成專案的建立。
五-02-Codeblocks project 的目錄結構
建立一個 codeblock 的專案後,在視窗的左邊,在 Management 左框中,預設會顯示一個 Projects 的頁框,在其下方會顯示目前已開始的一個或多個專案的階層式資料,例如,上述己建立一個 test01 的專案,所以其專案的階層式資料如下:
- Workspace :指工作區
- test01:指專案的名稱
- sources:指原始程式碼區,點按左方的向右箭頭按鈕就會顯示該專案所有的文字式原始檔名
- main.cpp:指該專案的主程式檔名,為 main.cpp,其中主檔名為 main,並不預設與專案的名稱相同,而附檔名為 cpp,意思為 C plus plus,亦即 C++之意。當雙點按該程式檔名後,在右框的視窗中就會顯示該原始程式的完整內容,使用者可自行編輯撰寫程式的內容。
上述的 Project 頁框的專案階層內容並不顯示之前所設定的 bin/Debug/, obj/Debug/, bin/Release/, obj/Release/的階層資料。
此時預設會建置一個在 console 中顯示 Hello world!! 的程式碼,記得此一程式的檔名為 main.cpp:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
此時可以點按選單中的「Build/build」來編譯 (complie) 該原始程式,編譯的結面會出現在下方視窗中的 Build log 的頁框中,若編譯成功,最後的訊息應該是:0 erros, 0 warnings ,若發生錯誤,就要修正該錯誤。
當編譯原始程式無誤時,可以點按「Build/Run」來執行可執行的程式碼檔,例如執行的結果:
Hello world!
Process returned 0 (0x0) execution time : 0.006 s
Press ENTER to continue.
當使用檔案總管查看 /home/alex/codeblocks-c++/test01/的目錄,其目錄結構如下:
- bin:此處是一個目錄
- Debug:此處是一個目錄
- test01:此一檔案即是二元可執行檔。可獨立複製到別處去單獨執行。
- obj:此處是一個目錄
- Debug:此處是一個目錄
- main.o:此一檔案即是編譯後的目的檔,是一個機器碼檔,但無法被機器所執行,只是一個中介檔。
- main.cpp:即是文字原始程式檔。
- test01.cbp:即是專案檔。
- test01.layout:即是此一專案的配置檔
其中 test01.layout 的內容範例如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<FileVersion major="1" minor="0" />
<ActiveTarget name="Debug" />
<File name="main.cpp" open="1" top="1" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="91" topLine="0" />
</Cursor>
</File>
</CodeBlocks_layout_file>
不同的 IDE 軟體整合開發軟件的專案檔案結構與儲存目錄的方式不盡相同,要使用過後才能知曉。例如,eclipse的專案中,原始程式檔會存放在專案主目錄下的 src 子目錄中,但是在 codeblocks 中,原始程式檔直接存放在專案的主目錄下。
又要想一併同時編譯程式後立即執行程式,可點按「Build/Build and Run」。