Code::Blocks介紹
===
### Workspace、Project、Build target

Workspace裡面塞很多Project,有新增、減少Project的話要記得**手動**存檔。
一個Project裡面通常就用來編譯一隻程式,有多個不同的main.c的話就多新增幾個Project。
Build target是決定編譯出來的目標,一開始預設應該有Release、Debug這兩個。最顯著的差異就是有沒有加入`-g`參數。
Active project是決定那些編譯、執行、Debug圖示&快捷鍵要對哪個Project動作,除了寫在右上角外Project的名子還會變粗體。
### Project設定
在Project上右鍵→Properties,會看到這個:

Project setting:在這邊可以用自己的Makefile,還可以點出[Build options](#build-options)
Build targets:[看這裡](#build-targets)
Build scripts:不知道幹嘛用。
Notes:顧名思義。
C/C++ parser option:編譯時找header位置的設定吧,不過明明在Build options→Search directories也可以設定。
Debugger:跟Debugger相關的設定,要遠端Debug的話要在這邊用。
EditorConfig options:編輯相關設定...Settings→Editor那邊的設定的比較多。
EnvVars options:恩...如果Compiler找不到的話,又不想新增環境變數可以在這邊選...意義不明。
Libraries:意義不明,明明Build options→Linker settings就可以設定了。
### Build options
Build options可以設定編譯參數、路徑、編譯前動作、編譯後動作...C::B bug一堆的地方。

Build target可以針對整個Project設定,也可以針對個別Target設定,在右邊的Policy上面會有差異。(Settings→Compiler可以針對Compiler做更詳細的設定,不過那邊不建議亂動)
Project的Build option、個別Target的Option、全域的Compiler設定這三個地方都有可能會改變你編譯的參數,要注意。
### Build targets

左邊可以管理Build target。
右邊的Application type可以決定是Console、GUI、Library之類的東東。
下方就是決定這個Build target要不要對這個檔案做處理,有打勾的在這個Target下才會被編譯、連結。
個別檔案的設定可以在檔案上右鍵→Properties

Compile file打勾的話這個檔案才會被編譯,沒勾的話檔案會變灰色的。
Link file打勾的話在連結時才會把filename.o連結進去。
Belongs in targets就是說有勾起來的才會在那個Target裡作用。
Priority weiget用來決定編譯的優先順序,C::B在連結的時候指令會亂下,有些明明有編譯,.o檔有出來,function有在裡面,還是會造成Compiler找不到...就要把他的優先權整一下。
Advanced可以對個別的檔案設定他的編譯器、編譯指令...所以就有四個地方會影響編譯參數了,Build後底下的Build log才是唯一可以信任的地方。