Code::Blocks
Encyclopedia
Code::Blocks is a free
and open source, cross-platform
IDE
which supports multiple compilers including GCC
and MSVC. It is developed in C++
using wxWidgets
as the GUI toolkit. Using a plugin architecture, its capabilities and features are defined by the provided plugins.
Currently, Code::Blocks is oriented towards C
and C++
. It can also be used for creating ARM
, AVR
, D
, DirectX
, FLTK
, Fortran
, GLFW, GLUT
, GTK+
, Irrlicht
, Lightfeather, MATLAB
, OGRE
, OpenGL
, Qt, SDL
, SFML, STL
, SmartWin and wx
programs and applications. Although, in some cases, the respective SDK of framework
installation is required for development on a specific technology.
Code::Blocks is being developed for Windows
, Linux
, and Mac OS X
and has been ported to FreeBSD
.
The latest stable version, Code::Blocks 10.05, was released on May 30, 2010.
The first stable release was finally made on February 28, 2008, with the version number changed to 8.02. The versioning scheme was changed to that of Ubuntu
, with the major and minor number representing the year and month of the release.
Instead of creating a branch in the code tree where bugs are fixed in the stable release and new features are added in a separate branch the project continued as before; new features and bug fixes are all added into the same code space. Version 10.05 is the latest stable release; however for the most up-to-date version, the user has to download the relatively stable "nightly build".
Jennic Limited distributes a version of Code::Blocks customized to work with its microcontrollers.
/ GCC
, Digital Mars
, Microsoft Visual C++
, Borland C++
, Watcom
, LCC and the Intel C++ compiler
. Although the IDE was designed for the C++ language, there is some support for compilers of other languages, including GNU Fortran, Digital Mars D
and GNU GDC. Besides, the plug-in system can provide support for many programming languages.
through the use of the Scintilla
editor component, C++ code completion and class browser and an integrated to-do list. All of the open files are organized into tabs, which can be closed and opened at the user's will with the navigation pane or the close (X) button on the tabs. The code editor supports font and font size selection, this allows the user to choose the font and font size with which he is comfortable. In addition, it can provide specific syntax highlighting color theme that can be personalized.
(not fully supported yet).
designer called wxSmith. It is a derivative version of wxWidgets
. To make a complete wxWidgets application, the appropriate wx SDK must be installed with set environment variables.
and Microsoft Visual C++ project import, and Dev-C++ Devpak support.
build systems.
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
and open source, cross-platform
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...
IDE
Integrated development environment
An integrated development environment is a software application that provides comprehensive facilities to computer programmers for software development...
which supports multiple compilers including GCC
GNU Compiler Collection
The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...
and MSVC. It is developed in C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
using wxWidgets
WxWidgets
wxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes...
as the GUI toolkit. Using a plugin architecture, its capabilities and features are defined by the provided plugins.
Currently, Code::Blocks is oriented towards C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
and C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
. It can also be used for creating ARM
ARM
An arm is an upper limb of the body.Arm may also refer to:-Geography:* Arm , a narrow stretch of a larger body of water** Canal arm, a subsidiary branch of a canal or inland waterway** Distributary or arm, a subsidiary branch of a river...
, AVR
AVR
AVR may refer to:* Avon Valley Railway, a heritage railway in the United Kingdom* Atmel AVR, a family of microcontrollers* Assiniboine Valley Railway, a minimum gauge railway in Winnipeg, Canada...
, D
D (programming language)
The D programming language is an object-oriented, imperative, multi-paradigm, system programming language created by Walter Bright of Digital Mars. It originated as a re-engineering of C++, but even though it is mainly influenced by that language, it is not a variant of C++...
, DirectX
DirectX
Microsoft DirectX is a collection of application programming interfaces for handling tasks related to multimedia, especially game programming and video, on Microsoft platforms. Originally, the names of these APIs all began with Direct, such as Direct3D, DirectDraw, DirectMusic, DirectPlay,...
, FLTK
FLTK
FLTK is a cross-platform GUI library developed by Bill Spitzak and others. Made with 3D graphics programming in mind, it has an interface to OpenGL, but it is also suitable for general GUI programming....
, Fortran
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...
, GLFW, GLUT
OpenGL Utility Toolkit
The OpenGL Utility Toolkit is a library of utilities for OpenGL programs, which primarily perform system-level I/O with the host operating system. Functions performed include window definition, window control, and monitoring of keyboard and mouse input...
, GTK+
GTK+
GTK+ is a cross-platform widget toolkit for creating graphical user interfaces. It is licensed under the terms of the GNU LGPL, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the X Window System, along with Qt.The name GTK+ originates from GTK;...
, Irrlicht
Irrlicht Engine
Irrlicht is an open source 3D engine written in C++. It is cross-platform, officially running on Windows, Mac OS X, Linux and Windows CE and due to its open nature ports to other systems are available, including Xbox, PlayStation Portable, SymbianOS and iPhone.Irrlicht is known for its small size...
, Lightfeather, MATLAB
MATLAB
MATLAB is a numerical computing environment and fourth-generation programming language. Developed by MathWorks, MATLAB allows matrix manipulations, plotting of functions and data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other languages,...
, OGRE
OGRE
OGRE is a scene-oriented, flexible 3D rendering engine written in C++ designed to make it easier and intuitive for developers to produce applications utilizing hardware-accelerated 3D graphics...
, OpenGL
OpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...
, Qt, SDL
Simple DirectMedia Layer
Simple DirectMedia Layer is a cross-platform, free and open source multimedia library written in C that presents a simple interface to various platforms' graphics, sound, and input devices....
, SFML, STL
STL
STL may refer to:In International law:*Special Tribunal for LebanonIn communications:*Standard telegraph level*Studio/transmitter link*Small transmitting loop antenna STL may refer to:In International law:*Special Tribunal for LebanonIn communications:*Standard telegraph level*Studio/transmitter...
, SmartWin and wx
WxWidgets
wxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes...
programs and applications. Although, in some cases, the respective SDK of framework
Framework
Framework may refer to:*Software framework, a reusable set of libraries or classes for a software system .**Application framework, a software framework used to implement the standard structure of an application for a specific operating system....
installation is required for development on a specific technology.
Code::Blocks is being developed for Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
, Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
, and Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...
and has been ported to FreeBSD
FreeBSD
FreeBSD is a free Unix-like operating system descended from AT&T UNIX via BSD UNIX. Although for legal reasons FreeBSD cannot be called “UNIX”, as the direct descendant of BSD UNIX , FreeBSD’s internals and system APIs are UNIX-compliant...
.
The latest stable version, Code::Blocks 10.05, was released on May 30, 2010.
History
After releasing two release candidate versions, 1.0rc1 on July 25, 2005 and 1.0rc2 on October 25, 2005, instead of making a final release, the project developers started adding many new features, with the final release being repeatedly postponed. Instead, there were binary packages of the latest SVN version made available on a daily basis, called "nightly builds". These were supported better than the latest official 1.0rc2 release. While this approach provided users with bleeding-edge improvements and allowed developers to get constant feedback, it created an outside illusion that the project was stagnant (because no new releases have been made).The first stable release was finally made on February 28, 2008, with the version number changed to 8.02. The versioning scheme was changed to that of Ubuntu
Ubuntu (operating system)
Ubuntu is a computer operating system based on the Debian Linux distribution and distributed as free and open source software. It is named after the Southern African philosophy of Ubuntu...
, with the major and minor number representing the year and month of the release.
Instead of creating a branch in the code tree where bugs are fixed in the stable release and new features are added in a separate branch the project continued as before; new features and bug fixes are all added into the same code space. Version 10.05 is the latest stable release; however for the most up-to-date version, the user has to download the relatively stable "nightly build".
Jennic Limited distributes a version of Code::Blocks customized to work with its microcontrollers.
Compilers
Code::Blocks supports multiple compilers, including MinGWMinGW
MinGW , formerly mingw32, is a native software port of the GNU Compiler Collection and GNU Binutils for use in the development of native Microsoft Windows applications; MinGW can function either as a cross compiler targeting Windows or as a native toolchain run on Windows itself...
/ GCC
GNU Compiler Collection
The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...
, Digital Mars
Digital Mars
Digital Mars is a small American software company owned by Walter Bright that makes C and C++ compilers for Windows and DOS. They also distribute the compilers for free on their web site....
, Microsoft Visual C++
Visual C++
Microsoft Visual C++ is a commercial , integrated development environment product from Microsoft for the C, C++, and C++/CLI programming languages...
, Borland C++
Borland C++
Borland C++ is a C and C++ programming environment for MS-DOS and Microsoft Windows. It was the successor to Turbo C++, and included a better debugger, the Turbo Debugger, which was written in protected mode DOS....
, Watcom
Watcom C compiler
The Watcom C/C++ compiler is a compiler for the computer programming languages C and C++ that produces executable programs for several platforms and operating systems. The code it produces for MS-DOS executes very fast. It was one of the first compilers to support the Intel 80386 "protected mode"...
, LCC and the Intel C++ compiler
Intel C++ Compiler
Intel C++ Compiler is a group of C and C++ compilers from Intel Corporation available for GNU/Linux, Mac OS X, and Microsoft Windows....
. Although the IDE was designed for the C++ language, there is some support for compilers of other languages, including GNU Fortran, Digital Mars D
D (programming language)
The D programming language is an object-oriented, imperative, multi-paradigm, system programming language created by Walter Bright of Digital Mars. It originated as a re-engineering of C++, but even though it is mainly influenced by that language, it is not a variant of C++...
and GNU GDC. Besides, the plug-in system can provide support for many programming languages.
Code Editor
The IDE features syntax highlighting and code foldingCode folding
Code folding is a feature of some text editors, source code editors and IDEs that allows the user to selectively hide and display sections of a currently-edited file as a part of routine edit operations...
through the use of the Scintilla
Scintilla (editing component)
Scintilla is a free library that provides text-editing functions, with an emphasis on advanced features for source code editing. SciTE , Notepad++ and Notepad2 are standalone editors based on Scintilla.-Features:...
editor component, C++ code completion and class browser and an integrated to-do list. All of the open files are organized into tabs, which can be closed and opened at the user's will with the navigation pane or the close (X) button on the tabs. The code editor supports font and font size selection, this allows the user to choose the font and font size with which he is comfortable. In addition, it can provide specific syntax highlighting color theme that can be personalized.
Debugger
The Code::Blocks debugger has full breakpoint support. It also allows the user to debug their program by having access and using the local function symbol and argument display, user-defined watches, call stack, disassembly, custom memory dump, thread switching, CPU registers, GNU GDB Interface and MS CDBCDB
CDB can refer to:In music:* CDB , an Australian band* Charlie Daniels Band, the band of American musician Charlie DanielsIn organizations:* Caribbean Development Bank, an international financial institution...
(not fully supported yet).
GUI Designer
Code::Blocks comes with a GUIGui
Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...
designer called wxSmith. It is a derivative version of wxWidgets
WxWidgets
wxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes...
. To make a complete wxWidgets application, the appropriate wx SDK must be installed with set environment variables.
User Migration
Some of Code::Blocks' features are targeted at users migrating from other IDEs - these include Dev-C++Dev-C++
Dev-C++ is a free integrated development environment distributed under the GNU General Public License for programming in C and C++. MinGW, a free compiler, is bundled with it. The IDE is written in Delphi....
and Microsoft Visual C++ project import, and Dev-C++ Devpak support.
Project Files and Build System
Code::Blocks uses a custom build system, which stores its information in XML-based project files, but can optionally use external makefiles, which simplifies interfacing with projects using the GNU and Qt Software's qmakeQmake
qmake is a utility that automates the generation of Makefiles. Makefiles are used by the program make to build executable programs from source code; therefore qmake is a make-makefile tool, or makemake for short....
build systems.
See also
- Comparison of integrated development environmentsComparison of integrated development environmentsThe following tables list notable software packages that are nominal IDEs; standalone tools such as source code editors and GUI builders are not included.- ActionScript :- Ada :- Basic :- C/C++ :...
- ScintillaScintilla (editing component)Scintilla is a free library that provides text-editing functions, with an emphasis on advanced features for source code editing. SciTE , Notepad++ and Notepad2 are standalone editors based on Scintilla.-Features:...
- SciTESciTESciTE or SCIntilla based Text Editor is a cross-platform text editor written by Neil Hodgson using the Scintilla editing component. It is licensed under a minimal version of the Historical Permission Notice and Disclaimer...
- wxWidgetsWxWidgetswxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes...
- CodeliteCodeliteCodeLite is a free, open-source, cross-platform IDE for the C/C++ programming languages.- History :On August 2006 Eran Ifrah, CodeLite's author, started a project named CodeLite...