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