Code::Blocks介紹 === ### Workspace、Project、Build target ![](https://i.imgur.com/w1nXMLE.png) Workspace裡面塞很多Project,有新增、減少Project的話要記得**手動**存檔。 一個Project裡面通常就用來編譯一隻程式,有多個不同的main.c的話就多新增幾個Project。 Build target是決定編譯出來的目標,一開始預設應該有Release、Debug這兩個。最顯著的差異就是有沒有加入`-g`參數。 Active project是決定那些編譯、執行、Debug圖示&快捷鍵要對哪個Project動作,除了寫在右上角外Project的名子還會變粗體。 ### Project設定 在Project上右鍵→Properties,會看到這個: ![](https://i.imgur.com/oHxWVHV.png) 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一堆的地方。 ![](https://i.imgur.com/Z4UfOVK.png) Build target可以針對整個Project設定,也可以針對個別Target設定,在右邊的Policy上面會有差異。(Settings→Compiler可以針對Compiler做更詳細的設定,不過那邊不建議亂動) Project的Build option、個別Target的Option、全域的Compiler設定這三個地方都有可能會改變你編譯的參數,要注意。 ### Build targets ![](https://i.imgur.com/QLgpXTj.png) 左邊可以管理Build target。 右邊的Application type可以決定是Console、GUI、Library之類的東東。 下方就是決定這個Build target要不要對這個檔案做處理,有打勾的在這個Target下才會被編譯、連結。 個別檔案的設定可以在檔案上右鍵→Properties ![](https://i.imgur.com/4NWVxuN.png) Compile file打勾的話這個檔案才會被編譯,沒勾的話檔案會變灰色的。 Link file打勾的話在連結時才會把filename.o連結進去。 Belongs in targets就是說有勾起來的才會在那個Target裡作用。 Priority weiget用來決定編譯的優先順序,C::B在連結的時候指令會亂下,有些明明有編譯,.o檔有出來,function有在裡面,還是會造成Compiler找不到...就要把他的優先權整一下。 Advanced可以對個別的檔案設定他的編譯器、編譯指令...所以就有四個地方會影響編譯參數了,Build後底下的Build log才是唯一可以信任的地方。