codeblocks 使用匯總

集成本帖提到的全部補丁,非官方,雙編譯器(VC九、MinGW4.4.3)綠色版,解壓密碼:csdn   
>> http://portablecb.googlecode.com/files/LoveDEV.7z
<< 因爲集成VC9,因此請試用後24小時內刪除!

官方公告:http://forums.codeblocks.org/index.php/topic,12156.0.html
這段時間比較忙,主要是學習Code::Blocks的代碼,而且爲其提交補丁。

這幾天我爲CB提交了幾個補丁,歡迎你們積極測試,特散分感謝!php

--------------------------------------------------html

http://blog.csdn.net/sdfgh2046/article/details/5812663linux

享受Code::Blocks編輯快感的幾個關鍵 

原文地址:http://blog.csdn.net/Utensil/archive/2008/12/24/3593502.aspxios

感謝Loaden的補充。此文是對帖子 http://wxforum.shadonet.com/viewtopic.php?t=22128 的總結和整理,按我的喜愛作了取捨和從新排序。 

說明:

1)如下須要設置的地方均在Settings->Editor...彈出的對話框中。

2)很多命令均可針對當前行或選中的代碼塊,下文簡稱當前行或選中塊。

==平常編輯==

    • 按住Ctrl滾滾輪,代碼的字體會隨你心意變大變小,對保護視力特別有好處。 
    • 在編輯區按住右鍵可拖動代碼,省去拉(尤爲是橫向)滾動條之麻煩;相關設置:Mouse Drag Scrolling。 
    • Ctrl+D可複製當前行或選中塊。
    • Ctrl+Shift+C註釋掉當前行或選中塊,Ctrl+Shift+X則解除註釋。 
    • Tab縮進當前行或選中塊,Shift+Tab減小縮進。
    • 可拖動選中塊使其移動到新位置,按住Ctrl則爲複製到新位置。
    • 按下Atl,再拖動鼠標,能夠實現部分選擇(即只選中一個區域內的字符,而不會包含它們所在行的其餘字符)。
    • 須要更大編輯空間時,F2和Shift+F2分別能夠顯隱下方Logs & others欄和左方的Management欄。

==自動完成與縮寫==

1)優化代碼自動完成功能:在Code-completion and symbol browser中, 
    • 將Automatically launch when typed # letter中的4改爲2,這樣打兩個字母就會有提示了。 
    • 將Keyword sets to additionally include中1到9都勾上(可在Syntax highlighting 的keywords...中設置,其中1是C++關鍵字,3是Doxygen關鍵字;我曾將wxWidgets的類名都加入7並設置相應的字體(粗黑 體),看代碼時特別爽) 
    • 將Delay for auto-kick-in when typing [.::->]拉到 200ms,這樣快點出來提示 
    • 選中Case-sensitive match,防止一些無關的東西干擾,若是你想它幫你糾正大小寫,那就去掉勾 
    • 在Keyboard short-cuts中將Edit->Code complete的快捷鍵由Ctrl+Space改成Alt+/,由於前者與中文輸入法切換衝突,該快捷鍵爲已經輸入的(不是正在輸入的)詞提供自動完成。 

2)看Abbreviation一欄,裏面定義了許多縮寫(還能夠自定義),只要輸入這些縮寫,並按Ctrl+J,就能夠自動完成經常使用的代碼框架,並將光標放在恰當的地方(自定義時用|表達)。經常使用的有:guard、class、switch等。

3) 若是你聲明瞭一個類,你能夠在cpp文件中右擊,Insert->All class methods without implementation...來插入你還沒定義的方法的定義(省去很多打字的功夫哦),也可以使用Insert->Class Method declaration/implementation...來插入一個方法的聲明或定義。 

==導航相關==

    • Ctrl+G 到達指定行,ALT+G 到達指定文件,Ctrl+Alt+G 到達指定函數(支持頭文件中的函數定義),F11 切換源文件與頭文件。
    • Ctrl+PageUp 到達上一個函數,Ctrl+PageDown 到達下一個函數。
    • Ctrl+B 添加書籤,Alt+PageUp和Alt+PageDown能夠切換書籤。
    • Ctrl+Shift+B可找到匹配的括號。
    • 看長代碼時,可右擊,Folding->Fold All,而後慢慢展開來看,也可充分利用左方Management欄的Symbol瀏覽器。 
    • 在一個變量、函數或宏上右擊,三個以Find開頭的菜單項,分別能夠爲你轉到它的聲明、定義和找到全部出現的地方(按F2在下方Thread Search那裏查看)。
其餘:
    • General Settings中能夠設置縮進、自動換行等細節。 
    • 讓Code::Blocks永遠記住你的Layout,尤爲是debug的layout,善用debug工具欄。
    • 備份C:/Documents and Settings/[你的用戶名]/Application Data/codeblocks/Default.conf,如遇重裝,將其放在codeblocks.exe所在目錄,就不會丟失你的配置;這樣也能夠 打造出Code::Blocks的綠色版。

 

 

 

想一想一個沒有讀過 世界頂級C++開發權威之一的牛人Scott Meyers (點擊轉到其主頁)的《Effective C++》和《More Effective C++》兩本鉅著的編譯器,和一個有讀過這兩本著做的編譯器相比,真是高下立見。程序員

前面都是廢話。web

打開Code::Blocks(採用中文語言包的界面),主菜單「設置」 -> 「編譯器與調試器」 ,選中GCC編譯器。而後配置其編譯器選項:express

Enable Effective-C++ warnings....windows

 

這樣配置,是讓全部之後在Code::Blocks新建的,採用gcc編譯器的C++項目,都會使用這個選項。若是你只是想在個別項目中使用,那麼能夠在具體項目中作此配置(打開工程以後,主菜單:項目->構建選項)。瀏覽器

 

有了這個選項,會帶來什麼好處呢?咱們先考一下本身:架構

Code:
  1. #include <iostream>   
  2.   
  3. using   namespace  std;  
  4.   
  5. class  Person  
  6. {  
  7. public :  
  8.     virtual   void  Say()  
  9.     {  
  10.         cout << "I am a person."  << endl;  
  11.     }  
  12.       
  13.     ~Person()  
  14.     {  
  15.         cout << "bye-bye person."  << endl;  
  16.     }  
  17. };  
  18.   
  19. class  Beauty :  public  Person  
  20. {  
  21. public :  
  22.     Beauty()  
  23.         : _p (new   int )  
  24.     {  
  25.           
  26.     }  
  27.       
  28.     ~Beauty()  
  29.     {  
  30.         delete  _p;  
  31.     }  
  32.   
  33.    virtual   void  Say()  
  34.     {  
  35.         cout << "I am a beauty."  << endl;  
  36.     }  
  37.       
  38.       
  39. private :  
  40.     int * _p;  
  41. };  
  42.   
  43. int  main()  
  44. {      
  45.     return  0;      
  46. }  

以上代碼存在哪些設計上的隱患呢? 語法是確定沒有問題的啦,一個沒有讀過書的編譯器,確定會聽話地編譯完以上代碼。

但一個有讀過的書的編譯器,它會給出如下警告,帶上簡單翻譯:

 

||=== Temp4Book, Debug ===|

main.cpp|7|warning: 'class Person' has virtual functions and accessible non-virtual destructor

(第7行,class Person擁有一個虛函數,但是它的析構函數不是虛的! 太可怕的設計錯誤了)

main.cpp|21|warning: 'class Beauty' has pointer data members

(第21行,class Beauty擁有一個指針數據成員,接下一行……)

main.cpp|21|warning:   but does not override 'Beauty(const Beauty&)'

(可是,你沒有給Beauty定製拷貝構造函數!)

main.cpp|21|warning:   or 'operator=(const Beauty&)'

(一樣,也沒有重載它的賦值操做符!)

main.cpp|21|warning: 'class Beauty' has virtual functions and accessible non-virtual destructor

(第21行,class Beauty一樣擁有一個虛函數,但是它的析構函數不是虛的! 緣由在其基類上的,呵呵。)

||=== 已完成構建: 0 個錯誤, 5 個警告 ===|

 

你不信這些警告的重要性嗎?能夠買前面提到的那兩本書,國內有出版。這裏簡單一例:

Code:
  1. void  test()  
  2. {  
  3.       Beauty b1;  
  4.       Beauty b2=b1;  
  5. }  
嚴重問題發生了,你能知道問題在哪嗎?來作一道試題測試一下吧:)
 

 

 

 

第一次使用CodeBlocks,就遇到了中文問題的困擾 ,以下的寫法,在編譯時,出錯: 

wxString msg(_T( " 中華人民共和國 " ));

error:converting to execution character set: Illegal byte sequence

呵,GCC在編譯時,沒法將漢字進行正確的轉換,解決的辦法是,明確告訴GCC編譯器,輸入的文件是中文的,這樣就能夠了,設置編譯器參數,由於在 程序中使用中文,將是很是常見的,因此,我將設置全局的參數,以下:settings->Compiler and debugger,以下圖:

 

設置編譯選項:-finput-charset=GBK

 

 

Code::Blocks最近新帶的插件工具:CppCheck。這是一款靜態檢查C++程序代碼的工具。和C::B同樣是一款開源的軟件。

在SourceForge的主頁是: sourceforge.net/apps/mediawiki/cppcheck/index.php 。

Cppcheck is an analysis tool for C/C++ code. Unlike C/C++ compilers and many other analysis tools, we don't detect syntax errors. Cppcheck only detects the types of bugs that the compilers normally fail to detect. The goal is no false positives.

CppCheck實際上是一個獨立的工具,徹底脫離任何IDE能夠運行,早先我就是獨立使用它,但自打C::B把它給集成了,感受使用起來更是方便了很多。

 

       新版的插件菜單中,能夠找到CppCheck插件,不過事前你可能須要單獨下載,安裝好CppCheck。下載地址:

   sourceforge.net/projects/cppcheck/

下載安裝 cppcheck: (有for windows版本,不曾實驗)

http://sourceforge.net/projects/cppcheck/files/

 

root 安裝

make & make install

 

      爲了演示,直接上手。搞一些低級錯誤,讓CppCheck檢查一下:     

Code:
  1. #include <iostream>   
  2. #include <fstream>   
  3.   
  4. using  namespace  std;  
  5.   
  6. int  main()  
  7. {  
  8.     #define MAX_INT_ITEM_COUNT 100   
  9.       
  10.     int * p = new  int [MAX_INT_ITEM_COUNT]; //分配了內存   
  11.       
  12.     for  (int  i=0; i<MAX_INT_ITEM_COUNT; ++i)  
  13.     {  
  14.         p[i] = MAX_INT_ITEM_COUNT-i;  
  15.     }  
  16.           
  17.     return  0;    //沒釋放 p 就byebye了   
  18. }  

        運行插件,Code::Blocks 消息欄將顯示檢查結果:

 

   說的是: 在main.cpp 的第17行,存在「內存泄漏的可能,相關對象是:p。」

   呵呵,繼續改一下代碼:

Code:
  1. //... 前面代碼略   
  2.     int * p = new  int [MAX_INT_ITEM_COUNT]; //分配了內存   
  3.       
  4.     for  (int  i=0; i<MAX_INT_ITEM_COUNT; ++i)  
  5.     {  
  6.         p[i] = MAX_INT_ITEM_COUNT-i;  
  7.     }  
  8.           
  9.     delete  p; //正確寫法應是:delete[] p;   
  10.           
  11.     return  0;     
  12. //...   

不需編譯,再從C::B菜單裏運行一下CppCheck插件……這回是:

main.cpp|17|mismatchAllocDealloc : error : Mismatching allocation and deallocation: p|

意思是:在main.cpp文件裏,第17行(上代碼片斷中的09行),有個「不匹配的內存分配與釋放」的錯誤,對象仍然是:p。(new[] 出來的東西,要用delete[]釋放,你非要說用delete也能夠,那是由於你在用一個超級有問題的編譯器....)

 

注意事項:

A) 顯然,它不能檢查一切。

B)但有意思的,它常常能查出你本身都想不到問題。(偶爾讓你一身冷汗,連續120分鐘不敢再邊寫代碼邊斜眼看邊上的美女)

C)固然啦,有的它檢查出來了,但倒也不必定就是天條,畢竟C++程序是自由的,C++程序員個個都會搞些暗爽的代碼寫法。

結合 Code::Blocks的一些問題

很大的工程,或者工程有超大的文件(每每是工具生成的那種),它檢查起來是超慢的,這時C::B會先是死等,慢慢的,就會變成等死。

 

windows下 codeblocks 10.05安裝配置

1、下載安裝包

       若是您有安裝之前版本,並不須要卸載。

       Windows安裝下載頁面:   http://www.codeblocks.org/downloads/26

       請下載圖中所示的連接:

 

 

       高級用戶須知:這個連接帶有新版的 MinGW gcc編譯環境,但並非(mingw)官方 版本,而是TDM gcc 4.4.1 版本。若是您想另行安排,好比您只想用VC的編譯器,能夠下載上圖中另外一個連接。

 

2、安裝必讀!

    1)、請選擇定製安裝!custom 

    2)、選中所有插件

     否則,可能 相似 CppCheck的插件 ,就會找不到...

 

    3)、不看可能會後悔:修改安裝目標路徑。

       這不是Code::Blocks的錯,而是 mingw gcc 的連接器 ln.exe 有個BUG,不能連接位於帶空格或漢字路徑下的文件。

      

    -------------------------------------------------------------------------------------

   餘下的步驟,和通常軟件安裝也就差很少了。

 

3、配置編譯環境

   1)、 運行Code::Blocks,第一次運行會彈出選擇編譯器,請選中gcc 編譯器(一般是第一項)。

   2)、 進入主界面後,主菜單 Setting -> Compiler and debugger ...

             彈出對話框中,左邊選中第一項:Global compiler setting.. 右邊最上面選中「GNU GCC Compiler」 (一般默認就是它)

            其下選中「Toolchain executables」, 點一下 Auto-detect,會讓C::B自動檢測到MinGW的安裝路徑(一般不用檢查也是對的,MinGW如按上述步驟安裝,它就在Code::Blocks的安裝路徑下)。

             進入MinGW的安裝路徑下的bin子目錄,好比:C:/CodeBlocks/MinGW/bin.找一下是否有 「mingw32-make.exe」這個文件,若是沒有,找到make.exe,複製一份,將複製品更名爲 mingw32-make.exe。

           ( 一樣方法,找一下是否有 mingw32-gcc.exe ,ming32-g++.exe兩個程序,若是沒有,分別複製gcc.exe 及 g++.exe,將複製品更名爲 mingw32-gcc.exe 及mingw32-g++.exe。 我忘了到底有沒有,你們就確認一下吧,有答案的話留言一下)

    3) 同一對話框內,左邊切換到最後一項 「Debugger setting」 

          右邊最上面的「Debugger intialization commands」下,輸入 : handle SIGTRAP noprint

          這對調試某些帶有調試信息的windows SDK庫,有好處,不然調試器會不斷停在操做系統的某些庫的彙編代碼上....

         同一頁面,編輯框往下的多選框,除了最後一項明顯不能選中之外,其它的均可以酌情選中(具體意思你們看一下文字也能理解,不能理解的話,能夠安裝上中文語言包之後,再查看)。

4、測試   

          點擊主菜單:new -> Project  (或者直接在 Start here 頁面上點擊「Create a new project」)。 對話框中左邊選中「Project」,右邊在一堆圖標中找到「Console application」。點擊「Go」開始嚮導。

         嚮導第一步是歡迎頁,進入下一步,選「C++」。

        下一個頁面中, Project title 下輸入 HelloCB ,不要帶空格。Folder to create project in :中,經過末尾的小按鈕,選擇你要存儲工程的父路徑。一樣不要帶空格,好比新建一個c:/MyCPPCode 目錄。

        再下一步中,不須要修改,一般選中的就是GNU gcc編譯器了,而且默認選中要生成Debug和Release兩個構建目標,如名所示,一者用於調試,一者用於發佈。

       點擊 Finish……打開項目樹中的「main.cpp」文件。若是看不到項目樹,請按 Shift  + F2。

      這是main.cpp裏,默認的代碼:

Code:
  1. #include <iostream>   
  2.   
  3. using  namespace  std;  
  4.   
  5. int  main()  
  6. {  
  7.     cout << "Hello world!"  << endl;  
  8.     return  0;  
  9. }  

       沒錯,就是著名的Hello world! 測試例程。按Ctrl + F9 ,編譯之。若是一切設置無誤,編譯應能成功。要看編譯信息,請按F2確保日誌面板出現。 編譯成功後,按 F9 運行……

       下載及使用我準備的最新中文語言包,以及如何作一些更好用的配置,下一節再講。

 

5、重要補充

          windows vista , windows 7 用戶必讀:

        1), 您最好以Administrator 用戶安裝,使用code::blocks。

        2), 若是想要編寫,以及調試 NT Service之類的程序,最好設置 codeblocks.exe  的兼容性爲 「運行在Administrator身份」這下。固然這樣設置以後,在win 7 等系統下,每次運行codeblocks,都要搞一下那個UAC對話框了。 

        linux,mac 用戶,前述下載頁,已經有提供多個發行版本的linux下載連接,請自行去官網下載。

         高手參看: C::B支持多種編譯器,若是您有須要,請自行配置。    若是您有興趣自編譯新版c::b,能夠下載源碼,而後使用之前的8.02版加每夜構建升級包,從舊c::b裏編譯出一個新版c::b。

 

 

  Code::Blocks 提 供了許多工程模板,這包括:控制檯應用、DirectX應用、動態鏈接庫、FLTK應用、GLFW 應用、Irrlicht工程、OGRE應用、OpenGL應用、QT應用、SDCC應用、SDL應用、SmartWin應用、靜態庫、Win32 GUI應用、wxWidgets應用、wxSmith工程,另外它還支持用戶自定義工程模板。在wxWidgets應用中選擇UNICODE支持中文。
  Code::Blocks支持語法彩色醒目顯示,支持代碼完成(目前正在從新設計過程當中)支持工程管理、項目構建、調試。
   Code::Blocks支持插件,目前的插件包括代碼格式化工具AStyle;代碼分析器;類嚮導;代碼補全;代碼統計;編譯器選擇;複製字符串到剪 貼板;調試器;文件擴展處理器;Dev-C++ DevPak更新/安裝器;DragScroll,源碼導出器,幫助插件,鍵盤快捷鍵配置,插件嚮導;To-Do列表;wxSmith;;wxSmith MIME插件;wsSmith工程嚮導插件;WindowsXP外觀。
  Code::Blocks具備靈活而強大的配置功能,除支持自身的工 程文件、C/C++文件外,還支持AngelScript、批處理、CSS文件、D語言文件、Diff/Patch文件、Fortan77文件、 GameMonkey腳本文件、 Hitachi彙編文件、Lua文件、MASM彙編文件、Mathlab文件、NSIS開源安裝程序文件、Ogre Compositor腳本文件、Ogre Material腳本文件、OpenGL Shading語言文件、Python文件、Windows資源文件、XBase文件、XML文件、nVidia cg文件。識別Dev-C++工程、MS VS 6.0-7.0工程文件,工做空間、解決方案文件。

 

codeblocks插件介紹

 

衆所周知CB的一個優勢就是開放式架構提供靈活的插件開發和支持,咱們也相信在從此的發展上插件對CB的貢獻會愈來愈大。

下面是現有核心插件和貢獻插件的簡介列表:

 

Core Plugins 核心插件(系統初始化時會自動加載,由CB官方開發團隊維護)

The core plugins are installed by default and offer the basic functions of Code::Blocks. The core plugins are maintained / developed by the official development team.

Autosave

Saves project files between intervals.

Class Wizard

Provides wizard for creating new classes.

Code Completion [這個插件很是重要,如今處於重寫階段,估計很快會合你們見面]

Provides  code completion functionality and class browser.

 

Compiler [爲大量編譯器提供統一界面]

Provides support for various compilers in one interface.

Debugger

Provides support for various debuggers in one interface.

File Extensions Handler

Adds extra file extension handlers.

Open Files List

Manages a list of all opened files (editors).

Projects Importer

Imports projects from other IDE’s, e.g. MS Visual Studio and DevC++.

Scripted Wizard

Provides scripted wizard functionality.

Source Code Formatter [根據不一樣代碼風格爲你從新自動美化代碼風格]

Formats source code files with specific style.

To-Do List

Adds to-do items to source code.

WinXP Look’n'Feel

Creates manifest file which enables the version 6.0 of the Common Controls on Windows XP.

 

 
Contrib Plugins[大衆貢獻版]

The user-contrib uted plugins are not installed by default and offer extended functionality for Code::Blocks. The contrib plugins are maintained / developed by third-party developers.

Auto Versioning

Helps you keep track of your project version and status.

Browse Tracker

Browse to previous source positions.

C::B Games

Games in a integrated development environment? You bet.

Code Profiler

Provides graphical interface to GNU GProf profiler.

Code Snippets

Manages small pieces of code (i.e. snippets).

Code Statistics

Shows various statistics from source code files.

Copy Strings to Clipboard

Copies literal strings from the current editor to clipboard.

DevPak Installer

Installs and updates DevC++ DevPaks.

DragScroll

Enables dragging and scrolling with mouse.

Environment Variables

Sets environment variables within the focus of Code::Blocks.

Help plugin

Integrates third-party help files to the interface.

HexEditor plugin

Opens files in a Code::Blocks integrated HexEditor.

Keyboard Shortcuts

Manages menu shortcuts.

Koders [快捷方式搜索相關代碼在koder網站]

Queries the Koders webpage for keywords.

KeyMacs plugin

KeyMacs (or Keyboard Macros)  plugin enables Recording, Playback, and editing of keystroke macros.

RegEx Testbed

Regular expressions testbed.

Source Exporter

Exports source code files to other formats such as HTML and PDF.

Symbol Table

A simple graphical interface to the GNU symbol table displayer (nm).

ThreadSearch

Multi-threaded ‘Search in files’ with preview window.

Valgrind

Valgrind analysis tools integration.

wxSmith [快速開發wxWidgets界面程序]

RAD tool for creating wxWidgets dialogs.

Retrieved from "http://wiki.codeblocks.org/index.php?title=Code::Blocks_Plugins "

相關文章
相關標籤/搜索