Code::Blocks for Mac is a free C, C++ and Fortran IDE that has a custom build system and optional Make support. The application has been designed to be very extensible and fully configurable.
Code::Blocks is an IDE packed full of all the features you will need. It has a consistent look, feel and operation across its supported platforms.
It has been built around a plugin framework, therefore Code::Blocks can be extended with plugins. Support for any kind of functionality can be added by installing/coding a plugin.
Key features include:
- Written in C++. No interpreted languages or proprietary libs needed..
- Full plugin support.
- Multiple compiler support: GCC (MingW / GNU GCC), MSVC++, clang, Digital Mars, Borland C++ 5.5, and Open Watcom etc.
- Support for parallel builds.
- Imports Dev-C++ projects.
- Debugger with full breakpoints support.
Code::Blocks' interface is both customizable and extensible with Syntax highlighting, a tabbed interface, Class Browser, a to-do list manager with different users, and many more features that are provided through plugins.
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.
Autotools: Fix compilation using autotools on OSX.
Fix ProjFile::Rename to correctly add the new file to m_ProjectFilesMap.
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.
Autotools: Modernize our build system.
Osx: Build all plugins as dynamic libraries.
Osx: Fix plugins location.
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 - Remove additional flags from pkg-config files.
C++11: Use unique_ptr instead of auto_ptr.
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.
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.
Script binding: Log messages with any buffer size.
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.
Fix a bug in configmanager.cpp which can lead to undefined behaviour. Wrong combination of std::map::erase and iterators.
Core / UI:
Remove ads extension when saving newly created files on wxGTK.
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.
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.
Fix open containing folder on linux.
Editor: Fix middle click copy/pasting when using wx2.8.
Editor: Revert some commits related to copy and pasting on wxGTK.
Update the info window after a plugin is uninstalled.
Editor: Insert new line below and above current line without indentation.
Do not loose settings when re-ordering targets in the project options dialog.
When removing files from a project, sort the files in the selection dialog.
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.
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.
Preserve open editors per target/project.
Lexer: Added few new keywords to Fortran lexer.
Fix crashes at startup due to undefined behaviour in wxPropGrid.
Remove explicit sizing and leave that to the sizers for controls in CodeStat settings, DoxyBlocks settings and Editor settings.
Printing: Fix printing splitted windows and improve the restoration of gutter and line numbers.
Limit the number of targets visible in the menu to lower number to try to fit them on screen.
Implement Select target menu item that shows an incremental select dialog.
Fix read-after-the-end-of-array bug when a project has more than MAX_TARGETS number of targets in it.
Use separate up/down buttons for the search dirs tab instead of a spin buttin.
Use separate up/down buttons for the linker libs list instead of a spinbutton.
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.
Make env settings dialog resizeable on Windows.
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.
Speed up goto file opening for large projects.
Make editor and environment settings resize correctly.
Better align widgets vertically in the EditPath dialog.
Use wxStdButtonSizer to make buttons more consistent.
Sort the elements in the tree, so they are consistent.
Fix an out-of-bounds read in the new GetUserVariableDialog.
Specify min size for the text ctrl in the EditPath dialog, so it is a bit more user friendly.
Use bitmap buttons for buttons in the EditPath dialog.
Replace flexgridsize with simpler boxsize in edit path dialog and fix the control expansion.
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.
Properly restore the line number settings in the editor after printing.
Add dialog for global variables to "Edit Path" dialog.
Fix incorrect usage of size_t.
Add multiple select in the "Copy to..." dialog in Search Directories.
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.
Fix default buttons in most dialog broken after the change to use wxStdDialogButtonSizer.
Fix SF Ticket #386 Parallel builds arbitrarily limited to 100.
Apply modified SF ticket #66 Patch for "Goto Function" enhancement.
Editor: Enable folding for newly created files.
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.
Updated the cc tooltip colours after the settings have changed.
Fix sorting of virtual folders when there is an empty one.
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.
Editor: Apply patch #71 - Wrap around when reaching the last bookmark in an editor.
Correct template title not to use illegal characters.
Allow to rename virtual folders via menu.
Select highlighting scheme from status bar for convenience.
Apply patch #80 - prevent asking for closing the workspace in batch builds.
Applied patch by frithjofh w/ some refactoring for the search/replace dialog.
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.
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.
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.
Send proper events for 'Autoselect single match'.
Automatically test for doxygen document.
Fix a bug that we have forget adding the doxygen documents for macro.
Fix a endless loop crash bug when parsing C99 designated initializer.
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.
Make Code::Blocks work better with current SDCC.
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.
Fix the AVR GCC compiler on linux to not add invalid include and linker paths.
Remove deprecated cygwin only flag.
Corrected "defines" switch for Gfortran.
Improvement of parsing of Gfortran compiler output.
Updated output parser for VS2015.
Add -std=c11 to default compiler options.
Batch mode doesn't work on MacOS.
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.
Switch to build log when compiling single file.
Remove the limit on the number of processors and change the default to use all available in the machine.
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.
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.
Applied patch to make Cygwin compiler work with recent Cygwin installations.
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.
Make it possible to examine the memory of non-pointer variables like structs.
Make it possible to examine the memory of a watched variable using the contect menu in the watches window.
Truncate the value when displaying the watches tooltip.
Fix crash in the disassembly windows.
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.
Examine memory dialog remembers the size to dump.
Fix parsing of backtrace produced by newer CDB's.
Make if possible to debug 32bit program with CDB 64bit.
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.
Apply YWX additions (GetWizardScriptFolder, FillContainerWithSelectCompilers,AppendContainerWithSelectCompilers,FillContainerWithChoices,AppendContainerWithChoices).
Improve Code::Blocks plugin wizard.
Add support for 3.1 in the WxWidgets wizard.
Fix images to be 32x32 and be transparent.
Added FLUID and SDL2 templates.
Add new templates to automake build-system.
Added Java wizards for fun.
Added qt5 and improved qt4 wizard.
Added arduino and msp430 wizards.
Added SDL2 wizard.
Added wizard for D language.
Applied (modified) to relax wizards when searching for library files to link against.
Add (Fedora-)path for dictionaries.
Support Unicode path names.
Better support short forms like "doesn't".
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...".
Fix a typo in the setting dialog.
Fix spelling - parentheses is the correct word.
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.
Improve compatibility with wx3.x by adding some new events and removing events that aren't supported.
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.
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.
Abbreviations: Applied patch to fix abbreviations target is missing in some project files.
Abbreviations: Fixed bug in with non-alpha-numeric character abbreviations.
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.
Cscope: Fix hang of cscope when given a missing file.
Help: allow to search for keywords also on CPlusPlus.com.
DoxyBlocks: Clean up the UI a bit.
DoxyBlocks: Filter out comment strings in the parameter documentation.
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.
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.
ThreadSearch: Fix infinite filesystem traversal when there are cyclic symlinks present.
Todo: Display count of list item.
Todolist plugin: some code improvements.
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.
Fix assert when closing the application during long compilation.
Memory dump window has wrong proportion on windows.
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.
Fix compilation with latest wx master.
Fix assert on startup in IncrementalSearch.
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".
Fix asserts when wizard icons are no 32x32 pixels big.
Fix an assert in ToDo plugin.
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.