Developer Tools

Code Blocks

5  /  443 Reviews
Mar 2, 2019 Last updated


# Change Log


For the release 17.12, we provide a changelog hereby about what has changed since 16.01 (to download the change log, a link is provided at the bottom of this page):


autotools: Try to fix building with newer boost

Prevent sending EVT_MOUSE_CAPTURE_LOST while opening a context menu in wxScintilla

Allow the user to discard old config file if it fails to load

Return false if there are errors reading a xml file with tinyxml

Fix crash when reading truncated config file

Make sure we show an error message box when we cannot save the config file

Move the wizard files to the correct folder when making bundle

Fix blurryness when making a bundle

autotools: Add OSX bundle making support (ticket #562, thanks Dave Murphy)

autotools: Fix compilation using autotools on OSX

Fix ProjFile::Rename to correctly add the new file to m_ProjectFilesMap (thanks homertp, ticket #521)

script bindings: Don't crash when trying to add wxString and something that is not a wxString

Speed up project loading for large projects (projects with many files or many targets)

FileManager: Write directly to symlinked files (wx30 only, ticket #276)

autotools: Modernize our build system (ticket 349, thanks David Seifert)

osx: Build all plugins as dynamic libraries (ticket #275, thanks Franko F)

osx: Fix plugins location (ticket #275)

Remove homemade static_assert and use the real thing

Add additional tests to MacrosManager to determine if a newer project has been activated.

Linux (autofoo): Try to use system provided squirrel, astyle, tinyxml (based on Fedoras unbundle-patch)

Fix issue #358 - Remove additional flags from pkg-config files (thanks Vincent C and Alexander GQ Gerasiov)

c++11: Use unique_ptr instead of auto_ptr (ticket 349 applied partially, thanks David Seifert)

c++11: Remove our nullptr implementation and some other tr1 classes

osx: Fix launching in terminal when the executable path contains characters that need to be escaped (thanks Easior Lars)

batch: Fix crash when batch building, because the autofitting accesses null pointer

c++11: Code::Blocks now requires a C++11 capable compiler

Use more proper types in some places (thanks frithjofh)

script binding: Log messages with any buffer size (hack, patch by unknown person)

Do not add a cmd.exe in front of NUL when replacing macros

Remove all breakpoint related functions from EditorBase

Remove all bookmark functions from EditorBase - they are not needed there, just in cbEditor

applied patch to remove and sync macro prefixes (thanks White-Tiger)

Fix a bug in configmanager.cpp which can lead to undefined behaviour. Wrong combination of std::map::erase and iterators (thanks to frithjofh).

Core / UI

Remove ads extension when saving newly created files on wxGTK (ticket #571)

Fix status bar flickering when scrolling the editors

Make sure that menu items in the Project menu are correctly disabled

Notify the user that there is running compilation during quit and ask if he/she wants to stop it

Make sure that menu items in the context menu in Projects tab are correctly enabled/disabled

Clean up the UpdateUI behaviour of the File menu items

Remove 'Save All', 'Save all projects' and 'Close all project' menu items from the File menu

Add update ui processing for the File - Properties menu item

Add 'Enable both' and 'Disable both' menu items in the Options submenu for the files in the project tree

Replace the cbMessageBox with AnnoyingDialog shown when there is config write error. This makes it possible to retry the saving of the config file

Do not loose changes when clicking twice the same target in ProjectOption dialog (ticket #547, thanks homertp)

lexer: Add PowerShell script support

Fix redraw problem on ubuntu because freeze/thaw are used in a wrong way

Move the open containing folder setting to the environment dialog (ticket #419)

Fix open containing folder on linux (ticket #419)

editor: Fix middle click copy/pasting when using wx2.8

editor: Revert some commits related to copy and pasting on wxGTK (9420, 6883, 5185) (ticket #524)

Update the info window after a plugin is uninstalled

editor: Insert new line below and above current line without indentation (ticket #180, thanks scarphin)

Do not loose settings when re-ordering targets in the project options dialog (ticket #534, thanks homertp)

When removing files from a project, sort the files in the selection dialog. (thanks Miguel Gimenez)

Always hide the "auto generated" text for files that do not belong to a project

Make it possible to edit all targets in the Select Target dialog (thanks homertp, ticket #522)

editor: Select word at cursor if there is nothing selected and the 'Select next occurrence' command is executed

editor: Make the UpdateUI behaviour for 'Select next occurrence' and 'Select skip to next occurrence' to be a bit more logical

editor: Fix bug in the Select Skip Next command when using it on the first selection

Add the current position of the cursor in the status bar (thanks frithjofh)

Preserve open editors per target/project (ticket #182 thanks scarphin)

lexer: Added few new keywords to Fortran lexer (thanks darmar, ticket #500)

Fix crashes at startup due to undefined behaviour in wxPropGrid (ticket #489)

Remove explicit sizing and leave that to the sizers for controls in CodeStat settings, DoxyBlocks settings and Editor settings (thanks blauzahn)

printing: Fix printing splitted windows and improve the restoration of gutter and line numbers (thanks LETARTARE)

Limit the number of targets visible in the menu to lower number to try to fit them on screen (ticket #478)

Implement Select target menu item that shows an incremental select dialog (#ticket 478)

Fix read-after-the-end-of-array bug when a project has more than MAX_TARGETS number of targets in it (ticket #478)

Use separate up/down buttons for the search dirs tab instead of a spin buttin (ticket #477)

Use separate up/down buttons for the linker libs list instead of a spinbutton (ticket #477)

Make the GotoFile to try calculate a column width based on its content, so everything fits in the column

GotoFunction: Make the dialog re-sizable

Set the focus to the cancel button in the about dialog to enable closing with escape to work on wx28 on linux

Add configuration option to make focusing the first build error an option (ticket #473, thanks yvesdm3000)

Make env settings dialog resizeable on Windows (thanks mgimenez)

GotoFile: New goto file dialog which uses virtual list which makes it possible to have 50-100k elements in it without visible slowdowns

Replace case insensitive with case sensitive checking when the user changes a virtual target name (ticket #468 thanks bluehazzard)

Speed up goto file opening for large projects (ticket #325)

Make editor and environment settings resize correctly (fixes ticket #467)

Better align widgets vertically in the EditPath dialog

Use wxStdButtonSizer to make buttons more consistent (ticket #421)

Sort the elements in the tree, so they are consistent (ticket #421)

Fix an out-of-bounds read in the new GetUserVariableDialog (ticket #421)

Specify min size for the text ctrl in the EditPath dialog, so it is a bit more user friendly (ticket #421)

Use bitmap buttons for buttons in the EditPath dialog (ticket #421)

Replace flexgridsize with simpler boxsize in edit path dialog and fix the control expansion (ticket #421)

Set HiDPI aware to false for C::B on Windows with HiDPI monitors (HiDPI support in wx starts from wx31+), should resolve some layout issues

Allow macros in project notes. Press J to do the replacement (patch by unknown person)

Properly restore the line number settings in the editor after printing

Add dialog for global variables to "Edit Path" dialog (ticket #421, thanks bluehazzard)

Fix incorrect usage of size_t (ticket #66)

Add multiple select in the "Copy to..." dialog in Search Directories (ticket #410)

Disable the Copy to buttons in the Build options dialog if nothing in the list is selected, because these operations do nothing in this case

Add multiple select in the "Copy selected to" dialogue (ticket #410, thanks bluehazzard)

Fix default buttons in most dialog broken after the change to use wxStdDialogButtonSizer (ticket #368)

Fix SF Ticket #386 Parallel builds arbitrarily limited to 100.

Apply modified SF ticket #66 Patch for "Goto Function" enhancement. Thanks Bat.

editor: Enable folding for newly created files (partly fixes ticket #366)

editor: Enable switching between header and implementation for templates (.tpp;.tcc . - .h;.hpp).

Use a listbox instead of choice for the list of variables in the global variables dialog (ticket #346, thanks bluehazzard)

Updated the cc tooltip colours after the settings have changed

Fix sorting of virtual folders when there is an empty one (thanks earlgrey)

Clarify the menu item names for splitting the editor

show project/workspace file name and target title in title of batch window

lexer: Added autotools, cu and inno setup lexers (patch by unknown person)

editor: Apply patch #71 - Wrap around when reaching the last bookmark in an editor (thanks beja)

Correct template title not to use illegal characters (patch by unknown person)

Allow to rename virtual folders via menu (patch by unknown person)

Select highlighting scheme from status bar for convenience (patch by unknown person)

Apply patch #80 - prevent asking for closing the workspace in batch builds (thanks Bat)

Applied patch by frithjofh w/ some refactoring for the search/replace dialog (see,20849.msg142364.html#msg142364)

Remove (new) from the name of the watches window

fixed wrong message in batch builds on errors

Use the app window in cbGetSingleChoiceIndex and cbGetTextFromUser as parent when nullptr is passed

Replace calls to wxGetTextFromUser with a custom function that allows sizing and proper placement (also add missing PlaceWindow calls when the wxTextEntryDialog is used)

Replace calls to wxGetSingleChoiceIndex with a custom function that allows sizing and proper placement

Limit the vertical resizing of the EditPath dialog

Use a std dialog button sizer in the GDB's breakpoints dialog

Remove strangely looking SetSize call, remove the static line widget from Compiler flags dialog

Rename the OK button to Close in the configure tools dialog

Remove a panel and a flexgridsizer from the compiler flags dialog

Make the edit path sizable

Replace box sizers with std dialog button sizers where possible, also expand the sizers

Expand the std button sizers in order to make the dialogs look better on wxGTK

Show file in the project tree command should show the Management tab if it is closed

disable saving / loading editor layout by default (due to a bug)

make loading/restoring project/editor layout an option

Replace '&' with '__' in the xrc file for the edit tools dialog (fixes ticket #321)

Change description of $$(macros) to $(macros) in the configure add dialog


Fix crash when showing the call tip

Fix doxygen spelling in the settings panel

Make the size of toolbar controls configurable in the settings (ticket #303)

Fix an issue that Code Completion list got hidden after shown up

Fix assert on generate ctor implementation

Fix possible inconsistency caused by bad usage of cbAssert - the expression must not have side effects, because in some builds they might not be executed

Fix default colours for code call tips (thanks darmar)

Send proper events for 'Autoselect single match'

Automatically test for doxygen document. (thanks White-Tiger)

Fix a bug that we have forget adding the doxygen documents for macro

Fix a endless loop crash bug when parsing C99 designated initializer

Fix ticket #278 and ticket #393 (thanks White-Tiger)

Fix ticket #351

Try to fix issue #14 for real this time (high memory consumption due to recursive symbolic links)

show an error to the user if expression could not be resolved

Fix a parsing std namespace bug.


Make it possible to utilize more than 16 CPU threads while building (ticket #327)

Make Code::Blocks work better with current SDCC (ticket #567, #371, thanks Philipp Klaus Krause)

Clean up the clang flags a bit and add the common sort options

Add -std=c++14 and -std=gnu++14 to the list of C++ only flags (format the file to be a bit more readable)

Try to improve the invalid compiler message we're printing

Add button to compiler toolbar to show the select target dialog

Improve clang log parsing (parse the file and line for notes)

Use the correct flag to the linker when building windows gui applications with clang (ticket #51, thanks edison)

Fix the AVR GCC compiler on linux to not add invalid include and linker paths

Remove deprecated cygwin only flag (ticket #526, thanks Jannick)

Corrected "defines" switch for Gfortran (thanks darmar, ticket #499)

Improvement of parsing of Gfortran compiler output (thanks darmar, ticket #497)

Updated output parser for VS2015 (thanks sodev, ticket #496)

Add -std=c11 to default compiler options

Batch mode doesn't work on MacOS (ticket #425, thanks Franko F for the original patch)

Save the other resource settings in the Compiler options dialog

Add support for the following options : -std==c++1y and -std=c++1z

Fix description of "-ansi" compiler-flag in "options_common_warnings.xml".

Expand backtick expression when doing clean for makefile projects (fixes #326)

Switch to build log when compiling single file (ticket #222, thanks Sergey Bezgodov)

Remove the limit on the number of processors and change the default to use all available in the machine (fixes #327)

Don't compile the regexes for the compiler until they are really needed (speeps up startup)

Support for new compilers: android-GCC MW, powerpc-EABI (patch by unknown person)

Added more common options to clang, gcc, msvc

parsing Gfortran v5.* compiler messages in new v5.* format; option -fopenmp should be applied at compiler and linker command line (thanks darmar)

Applied patch to make Cygwin compiler work with recent Cygwin installations (thanks stahta01)


Mark the GDB attach to process command to be a continue command

Remove squirrel based pretty printers - users are supposed to use the gdb-python-pretty-printers

Disable the Examine memory menu item for child or special (function args and local variables) watches (ticket #408)

Make it possible to examine the memory of non-pointer variables like structs (ticket #408)

Make it possible to examine the memory of a watched variable using the contect menu in the watches window (ticket #408, thanks bluehazzard)

Truncate the value when displaying the watches tooltip (ticket #85, thanks Bat)

Fix crash in the disassembly windows (ticket #506 and #503, thanks bluehazzard)

Fix parsing of shortened strings

Make the source code in mixed mode to be treated as comments by the asm lexer

Save the Mixed mode setting from the Disassembly dialog (thanks bluehazzard, ticket #503)

Examine memory dialog remembers the size to dump (ticket #503)

Fix parsing of backtrace produced by newer CDB's (ticket #430 thanks debugfanchin)

Make if possible to debug 32bit program with CDB 64bit (ticket #429, thanks debugfanchin)

Don't call EditorLinesAddedOrRemoved twice for split editors

Don't print a warning when the current compiler is set to "No compiler" and the active debugger is set to "Target's default"

Set print elements limit to the default for gdb, using unlimited has proven to be dangerous

Fix gdb watch parsing error when there is a repeating sequence just before a closing brace '}'

Fix issue #254 - make it possible to use the stop button for the CDB debugger (thanks maras420)

Scripted Wizard

Apply YWX additions (GetWizardScriptFolder, FillContainerWithSelectCompilers,AppendContainerWithSelectCompilers,FillContainerWithChoices,AppendContainerWithChoices)

Improve Code::Blocks plugin wizard (ticket #481, thanks bluehazzard)

Add support for 3.1 in the WxWidgets wizard (thanks New Pagodi)

Fix images to be 32x32 and be transparent (fixes ticket #314)

Added FLUID and SDL2 templates (patch by unknown person)

Add new templates to automake build-system

Added Java wizards for fun

Added qt5 and improved qt4 wizard (patch by unknown person)

Added arduino and msp430 wizards (patch by unknown person)

Added SDL2 wizard (patch by unknown person)

Added wizard for D language (patch by unknown person)

Applied (modified) patch by stahta01 to relax wizards when searching for library files to link against, see:,20730.msg142215.html#msg142215

Spell Checker

Add (Fedora-)path for dictionaries.

Support Unicode path names (thanks White-Tiger)

Better support short forms like "doesn't" (thanks White-Tiger)

Pumped hunspell lib to more recent version to allow adding additional / multiple dictionaries

Some status messages to the user to track down if something goes wrong


Added modified/bug-fixed patch by bluehazzard: Add possibility to change compiler

Bug-fix for erroneous message when user cancels dialog

Bug-fix for some UI logic (enabling/disabling applicable controls)

Query the user to save all projects at end for convenience

Show summary of operation done at end

Mark project files modified if they are changed


Fix config option label - swapped of and #

pump: update of ASTYLE plugin to fix bug #493 AStyle crashes in svn build rev 11033

make Mozilla style preview work correctly

Fix bug in settings dialog "Break logical conditions..." (ticket #450, thanks bluehazzard)

Fix a typo in the setting dialog.

Fix spelling - parentheses is the correct word

Fix issue #352 (thanks sodev)


Support for XML log file format v1 and v2 (v1 will be obsolete soon)

Allow macros in command line parameters provided through settings

Added support for Vera++ (

Add PATH to cppcheck executable if required before the call


Add wxSpinCtrl alignment styles

Fix drawing artefacts when built with wx3.0

Don't write \0 characters in generated/altered files when C::B is built with wx3.x

Fix crash, when closing wxs-file and a sub-property is selected; see:,21893.0.html

Improve compatibility with wx3.x by adding some new events and removing events that aren't supported (thanks mgimenez)

Sort generated includes and forward declartion to prevent random changes to the source files when the hash function changes

Fix the resizing of the ArrayStringEditor dialog

Make it handle minsize corretly for wxSplitter (ticket #465, thanks Volker Meyer)

fix assert with wx3.0, due to doubled properties in some sizeritems.

introduced settings wrt to controlling translation and style of translation code (wxT(), _T()...) globally

move wxMathPlot and it's counterpart wxSmithPlot in wxContribItems and wxSmithContribItems.

Other Plugins

abbreviations: Applied patch to fix abbreviations target is missing in some project files (thanks stahta01)

abbreviations: Fixed bug in with non-alpha-numeric character abbreviations (thanks BlueHazzard)

cb_share_config: Added simple "export all" functionality for easy backup of all config stubs to a backup folder

cbp2make: Added (further improved) cbp2make by mirai-computing due to project seems dead otherwise

CodeStat: Fix assert in the progress update (thanks blauzahn)

cscope: Fix hang of cscope when given a missing file (ticket #448 Robert Morin)

help: allow to search for keywords also on

DoxyBlocks: Clean up the UI a bit

DoxyBlocks: Filter out comment strings in the parameter documentation (thanks Yves De Muyter)

HexEditor: Change the label of the OK button to Find

HexEditor: Limit vertical resizing of the search dialog

HexEditor: Fix text misalignment when selecting numbers in the editor

IncrementalSearch: wx3 compatibility-fix

ProjectImporter: Better handling for more recent VC workspaces / project files (patch by unknown person)

SourceExporter/NassiShneiderman: Make sure only one File - Export menu is created no matter which plugin is created first

SourceExporter: Fix undefined behaviour

ThreadSearch: Add option to disable/enable the autosizing of log columns (fixes #324, thanks Sergey Bezgodov)

ThreadSearch: Fix infinite filesystem traversal when there are cyclic symlinks present

todo: Display count of list item (ticket #452 Sergey Bezgodov)

todolist plugin: some code improvements by frithjofh

Valgrind: Quote the path to the xml file if needed - makes the plugin work when the project is located in a path with spaces

Updated 3rd party libs

move astyle (plugin) out of beta into v3.0 release

updated exchndl (crash handler) to v0.8.2

updated exception handler to v0.8.1

updated wxPDFDoc library to recent GIT version to resolve licensing issues

updated exchndl (crash handler) DLL to v0.8.0

updated library to v0.9.5 for better wx30 compatibility

Misc (targeting wx3)

Fix assert when loading files and the global enconding setting is set to default (ticket #305)

Fix assert when closing the application during long compilation

Memory dump window has wrong proportion on windows (ticket #557, thanks bluehazzard)

Fix assert when executing Build - Errors - Next error and there is no error in the list

Fix the highlight language button in the status bar

Fix assert when pressing the auto-detect button in the compiler settings

Always disable symbol browser in such builds to prevent crashes (ticket #225)

Fix compilation with latest wx master (thanks blauzahn)

Fix assert on startup in IncrementalSearch (ticket #405, thanks bluehazzard)

Fix assert due to the same labeled property added to the wxSmith's property grid for wxStdDialogButtonSizer

Fix some alignment asserts reported for some of the dialogs

Fix assert when calling wxSetWorkingDirectory with an empty path

Fix two asserts in the AVR wizard

Fix lots of asserts when batch building (there are some left though)

Fix assert when the current target uses "No compiler" (fixes ticket #315)

Fix asserts when wizard icons are no 32x32 pixels big (fixes ticket #314)

Fix an assert in ToDo plugin (thanks blauzahn)

Fix assert when deleting a compiler

Fix assert when the search mask in the Find/Replace dialog is empty (fix formatting of the code around)

Fix the ValueTooltip autosizing. It was disabled for wx29, but should work in all wx3.0, because my patch should be in them


Code Blocks is an open source, free, C, C++ and Fortran IDE cross-platform that provides a ton of options. It is a no-cost C++IDE created with for users who have high demands.

Those behind this free software program designed it for extensive user customization and maximum flexibility. Centered on a plug-in style framework, the software is capable of being extended in the user's preferred manner. There is even a built-in plug-in wizard that empowers users to build their unique plug-ins.

IMPORTANT: We currently do not list Code::Blocks Linux versions, but you can find all of them on projects homepage here.

Code::Blocks Review

How Code::Blocks is Different From the Competition

Unlike other IDEs that are overly complex and require extensive time to figure out, Code::Blocks has a short learning curve. The masterminds behind the software created it with a solid user experience design that makes it easy for users to figure out all the software's nuances on the fly. The software actually replicates the user experience design of Visual Studio, so many users will find that Code::Blocks is quite intuitive.


Aside from its excellent user experience design, Code::Blocks also shines in a number of other areas. Those who detest writing UI code will find that the software does most of the work. Code::Blocks does not create unorganized, faulty code in the slightest. Instead, it generates UI code into C+ files (both .cpp and .h) that users can proceed to edit as they would with normal text files as long as it is not necessary to insert code within the blocks that the program uses. The auto-generated UI code is shockingly clean.

The software also empowers users to move the code around as desired and the program will still recognize it as long as the blocks remain intact. Users will love the fact that they can save resources in the form of .XRC files. Aside from Code::Block's ability to facilitate UI development, it can also function for C++ development on full-scale projects as well as everyday tasks. The IDE handles projects across different platforms without any significant issues. It is not necessary to make significant operating system changes, mess around with Makefiles or build entirely new systems for projects to compile. Just modify the Code::Block compiler settings, and you will be good to go.


If you're complaining regarding native Python support, this has been fixed: Python plugin is available here. You can find the debugger forum thread here.

Same for keyboard shortcut: the shortcut assignment is provided through a plugin named "Keybinder".

Some have complained that the debugger is limited compared to other programs. Many of these users have also noted that the debugger operates too slowly with Linux systems.

The Bottom Line

Code::Blocks might not be as powerful as Visual Studio yet it still provides elite functionality. It can be used for an array of production quality projects. Anyone who works with wxWidgets or production code will prefer this IDE over most others. The bottom line is that Code:Blocks is an excellent no-cost solution for C++ development with Linux.

Found this software useful? Please consider a donation to the author.