Code::Blocks is a free, open-source, cross-platform IDE. Built around a plugin framework, Code::Blocks can be extended with plugins. Any kind of functionality can be added by installing/coding a plugin. For instance, compiling and debugging functionality is already provided by plugins!
Code::Blocks offers all the features you need, having a consistent look, feel and operation across platforms.
Special credits go to darmar for his great work on the FortranProject plugin, bundled since release 13.12.
Features
- Open Source! GPLv3, no hidden costs.
- Cross-platform. Runs on Linux, Mac, Windows (uses wxWidgets).
- Written in C++. No interpreted languages or proprietary libs needed.
- Extensible through plugins
Compiler:
- Multiple compiler support:
- GCC (MingW / GNU GCC)
- MSVC++
- clang
- Digital Mars
- Borland C++ 5.5
- Open Watcom
- ...and more
- Very fast custom build system (no makefiles needed)
- Support for parallel builds (utilizing your CPU's extra cores)
- Multi-target projects
- Workspaces to combine multiple projects
- Inter-project dependencies inside workspace
- Imports MSVC projects and workspaces (NOTE: assembly code not supported yet)
- Imports Dev-C++ projects
Debugger:
- Interfaces GNU GDB
- Also supports MS CDB (not fully featured)
- Full breakpoints support:
- Code breakpoints
- Data breakpoints (read, write and read/write)
- Breakpoint conditions (break only when an expression is true)
- Breakpoint ignore counts (break only after certain number of hits)
- Display local function symbols and arguments
- User-defined watches (support for watching user-defined types through scripting)
- Call stack
- Disassembly
- Custom memory dump
- Switch between threads
- View CPU registers
Interface:
- Syntax highlighting, customizable and extensible
- Code folding for C, C++, Fortran, XML and many more files.
- Tabbed interface
- Code completion
- Class Browser
- Smart indent
- One-key swap between .h and .c/.cpp files
- Open files list for quick switching between files (optional)
- External customizable "Tools"
- To-do list management with different users
What's New
This is just an excerpt of the changelog with the differences since 17.12. You can read a full changelog on the Code::Blocks homepage.
HiDPI support:
- This release introduces new icon sizes (16, 20, 24, 28, 32, 40, 48, 56 and 64) for almost every UI element (menus, toolbars, project tree, most plugins).
- The icon size is appropriately selected based on the scaling used by the user. The goal is to make icons look big enough and non-blurry. This should work correctly on all major ports (wxMSW, wxGTK, wxCocoa)
- The icons in the editor's margin change size when scaling the editor.
- The icons in the auto-completion popup change size to match the scaling of the text.
- Code::Blocks is marked as DPI-aware:True on Windows which makes it look sharp. Per-monitor support is not yet available.
Editor:
- The Scintilla component has been updated to version 3.7.5 and most of the code has been synchronized with the code for wxSTC.
- This release introduces some improvements to handling multiple selection. Now it is possible to paste when multiple selections are active.
- A major flickering bug has been fixed when using wxGTK.
- Support for fonts with ligatures on all platforms has been introduced.
- Non-latin keys now work when used as shortcuts in the editor on Linux.
- There is an option to disable the save-to-temp-and-move operation we use by default.
- The context menu has been trimmed down and organized in a better way. Some options are no longer duplicated in the editor and editor notebook context menus.
- More advanced options for closing files have been added to the editor notebook context menu (close to the right/left).
- Lexers for several new languages have been added (Markdown, Nim, Plain text, YAML).
- Small improvements to the settings of the syntax highlighting.
Compiler:
- Add an option to targets which allows the user to select the linker executable to be used for the target. This makes C only project to use the C compiler executable for linking.
- Clear target specific variables from the MacroManager on every recalculation (ticket #582).
- Various improvements to the logging and auto switching to the log tabs.
- Add support for -std=c++17 flag.
- Make the abort button work again (ticket #104). Kill the started process and all children instead of using wxSIGTERM.
Other:
- The C/C++ parser used by the Code-completion plugin saw various improvements and bugfixes.
- Various improvements to multi-monitor support and child window placement.
- Do View - Toolbars - Fit toolbars on every startup.
- Many wxWidgets asserts have been fixed.
- Make sure passing --file=path/to/file.ext without line number works, too.
- Make pressing Return/Enter to select the filtered option in the Goto File, Goto Function and Select Target dialogs on Windows.
- SDK: Introduce API for Memory watches which might be used to implement plugins useful for embedded development.
- SDK: Make cbResolveSymLinkedDirPath a bit more robust (prevent infinite loops).
- Improved performance when loading large projects.
- Improved performance when opening the find/replace dialog when there is a project with many targets.
- Script bindings: Make it possible to examine and modify the Extension XML nodes in the project files.
- Debugger: Make it possible to attach to a process using the command line (This commit adds --dbg-attach and --dbg-config command line options).
- Debugger: Make sure to set the SHELL variable before starting GDB
- KeyBinder: Introduce version 2.0 using CodeLight key binding methods; allowing future ability to dynamically set menu and global accelerators to any frame.
- KeyBinder: Fix F2, Shift-F2 and allow linux to handle any View menu check items (ticket #273).
- SpellChecker: Fix wrong white space handling on windows by using Scintilla word finding function.
- wxSmith: Add various missing flags to various controls.
- wxSmith: Improve the UI, fix various crashes and asserts