Code::Blocks
Manual
Version 1.0
Thanks to the CodeBlocks team:
Anders F. Bj¨orklund (afb), Biplab Kumar Modak (biplab), Bartomiej wiecki (byo), Paul
A. Jimenez (ceniza), Koa Chong Gee (cyberkoa), Daniel Orb (daniel2000), Lieven de Cock
(killerbot), Yiannis Mandravellos (mandrav), Mispunt (mispunt), Martin Halle (morten-
macfly), Jens Lody (jens), Jerome Antoine (dje), Damien Moore (dmoore), Pecan Heber
(pecan), Ricardo Garcia (rickg22), Thomas Denk (thomasdenk), tiwag (tiwag)
Permission is granted to copy, distribute and/or modify this document under the terms
of the GNU Free Documentation License, Version 1.2 or any later version published by
the Free Software Foundation.
1 CodeBlocks Project Management
The instructions for chapter 3 on page 52 and chapter 4 on page 62 are official documen-
tations of the CodeBlocks Wiki site and available in english only.
The below illustration shows the design of the CodeBlocks user interface.
Figure 1.1: IDE CodeBlocks
Management This window contains the interface ’Projects’ which will in the following
text be referred to as the project view. This view show all the projects opened in
CodeBlocks at a certain time. The ’Symbols’ tab of the Management window shows
symbols, variables etc..
Editor In the above illustration, a source named hello.c is opened with syntax high-
lighting in the editor.
Open files list shows a list of all files opened in the editor, in this example: hello.c.
CodeSnippets can be displayed via the menu ’View’ →’CodeSnippets’ . Here you can
manage text modules, links to files and links to urls.
Code::Blocks V1.0 1.1 Project View
Logs & others . This window is used for outputting search results, log messages of a
compiler etc..
The status bar gives an overview of the following settings:
• Absolute path of an opened file in the editor.
• The editor uses the default character encoding of your host operating system. This
setting will be displayed with default.
• Row and column number of the current cursor position in the editor.
• The configured keyboard mode for inserting text (Insert or Overwrite).
• Current state of a file. A modified file will be marked with Modified otherwise this
entry is empty.
• The permission of a file. A file with read only settings will display Read only in the
status bar. In the window ’Open files list’ these files will be emphasised with a lock
as icon overlay.
• If you start CodeBlocks with the command line option --personality=<profile>
then the status bar will show the currently used profile, otherwise default will be
shown. The settings of CodeBlocks are stored in the corresponding configuration
file <personality>.conf.
CodeBlocks offers a very flexible and comprehensive project management. The following
text will address only some of the features of the project management.
1.1 Project View
In CodeBlocks, the sources and the settings for the build process are stored in a project
file <name>.cbp. C/C++ sources and the corresponding header files are the typical
components of a project. The easiest way to create a new project is executing the command
’File’ →’Project’ and selecting a wizard. Then you can add files to the project via the
context menu ’Add files’ in the Management window. CodeBlocks governs the project
files in categories according to their file extensions. These are the preset categories:
Sources includes source files with the extensions *.c;*.cpp;.
ASM Sources includes source files with the extensions *.s;*.S;*.ss;*.asm.
Headers includes, among others, files with the extension *.h;.
Resources includes files for layout descriptions for wxWidgets windows with the ex-
tensions *.res;*.xrc;. These file types are shown in the ’Resources’ tab of the
Manangement window.
The settings for types and categories of files can be adjusted via the context menu ’Project
tree’ →’Edit file types & categories’ . Here you can also define custom categories for file
extensions of your own. For example, if you wish to list linker scripts with the *.ld
extension in a category called Linkerscript, you only have to create the new category.
Codeblocks 2
Code::Blocks V1.0 1.2 Notes for Projects
Note:
If you deactivate ’Project tree’ →’Categorize by file types’ in the
context menu, the category display will be switched off, and the files
will be listed as they are stored in the file system.
1.2 Notes for Projects
In CodeBlocks, so-called notes can be stored for a project. These notes should contain
short descriptions or hints for the corresponding project. By displaying this information
during the opening of a project, other users are provided with a quick survey of the
project. The display of notes can be switched on or off in the Notes tab of the Properties
of a project.
1.3 Project Templates
CodeBlocks is supplied with a variety of project templates which are displayed when
creating a new project. However, it is also possible to store custom templates for collect-
ing your own specifications for compiler switches, the optimisation to be used, machine-
specific switches etc. in templates. These templates will be stored in the Documents and
Settings\<user>\Application Data\codeblocks\UserTemplates directory. If the tem-
plates are to be open to all users, they have to be copied to a corresponding directory of
the CodeBlocks installation. These templates will then be displayed at the next startup
of CodeBlocks under ’New’ →’ Project’ →’User templates’ .
Note:
The available templates in the Project Wizard can be edited by se-
lection via right-click.
1.4 Create Projects from Build Targets
In projects it is necessary to have different variants of the project available. Variants are
called Build Targets. They differ with respect to their compiler options, debug information
and/or choice of files. A Build Target can also be outsourced to a separate project. To
do so, click ’Project’ →’Properties’ , select the variant from the tab ’Build Targets’ and
click the ’Create project from target’ button (see Figure 1.2 on page 4).
1.5 Virtual Targets
Projects can be further structured in CodeBlocks by so-called Virtual Targets. A fre-
quently used project structure consists of two Build Targets, one ’Debug’ Target which
contains debug information and one ’Release’ Target without this information. By adding
Virtual Targets via ’Project’ →’Properties’ →’Build Targets’ individual Build Targets
can be combined. For example, a Virtual Target ’All’ can create the Targets Debug and
Release simultaneously. Virtual Targets are shown in the symbol bar of the compiler under
Build Targets.
Codeblocks 3
Code::Blocks V1.0 1.6 Pre- and Postbuild steps
Figure 1.2: Build Targets
1.6 Pre- and Postbuild steps
CodeBlocks makes it possible to perform additional operations before or after compiling a
project. These operations are called Prebuilt or Postbuilt Steps. Typical Postbuilt Steps
are:
• Creating an Intel Hexformat from a finished object
• Manipulating objects by objcopy
• Generating dump files by objdump
Example
Creating a Disassembly from an object under Windows. Piping to a file requires calling
cmd with the /c option.
cmd /c objdump -D name.elf > name.dis
Archiving a project can be another example for a Postbuilt Step. For this purpose, create
a Build Target ’Archive’ and include the following instruction in the Postbuilt Step:
zip -j9 $(PROJECT_NAME)_$(TODAY).zip src h obj $(PROJECT_NAME).cbp
With this command, the active project and its sources, header and objects will be packed
as a zip file. In doing so, the Built-in variables $(PROJECT_NAME) and $(TODAY), the
project name and the current date will be extracted (see section 3.2 on page 53). After the
execution of the Target ’Archive’, the packed file will be stored in the project directory.
Codeblocks 4