This document provides instructions for using Code::Blocks IDE to write, build, and run C/C++ programs on Windows and Ubuntu operating systems. It discusses installing Code::Blocks on both platforms, creating new projects, writing code, building projects, and debugging. Example code is provided for simple console programs and graphics programs using graphics.h and Simplecpp libraries.
This document provides instructions for using Code::Blocks IDE to write, build, and run C/C++ programs on Windows and Ubuntu operating systems. It discusses installing Code::Blocks on both platforms, creating new projects, writing code, building projects, and debugging. Example code is provided for simple console programs and graphics programs using graphics.h and Simplecpp libraries.
This document provides instructions for using Code::Blocks IDE to write, build, and run C/C++ programs on Windows and Ubuntu operating systems. It discusses installing Code::Blocks on both platforms, creating new projects, writing code, building projects, and debugging. Example code is provided for simple console programs and graphics programs using graphics.h and Simplecpp libraries.
This document provides instructions for using Code::Blocks IDE to write, build, and run C/C++ programs on Windows and Ubuntu operating systems. It discusses installing Code::Blocks on both platforms, creating new projects, writing code, building projects, and debugging. Example code is provided for simple console programs and graphics programs using graphics.h and Simplecpp libraries.
Department of Computer Science and Engineering Indian Institute of Technology - Bombay Mumbai - 400076. June 2, 2014 Contents 1 Introduction 1 1.1 Code::Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Simplecpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Code::Block IDE 1 3 Working with Code::Block on Windows 6 3.1 Installation of Code::Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2 Writing a new C/C++ Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2.1 Non-Graphic Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.2.2 Graphic Project using graphics.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2.3 Graphic Project using simplecpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.3 Building the Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.4 Opening existing program/project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4 Working with Code::Block on Ubuntu 34 4.1 Installation of Code::Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.2 Installation of packages for graphics.h header le . . . . . . . . . . . . . . . . . . . . . . . 35 4.3 Installation of Simplecpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.4 Writing a new c/c++ program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.5 Building the Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.5.1 Non-Graphics Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.5.2 Graphics Project using graphics.h . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.5.3 Graphics Project using simplecpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.6 Opening Existing Program/Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 A Code used for Windows 52 A.1 helloworld.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 A.2 line.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 A.3 3poly.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 B Code used for Ubuntu 53 B.1 helloworld.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 B.2 line.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 B.3 3poly.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 C Enabling full logging in Code::Block 54 i List of Figures 1 Code::Block IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Menu Bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 Main Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4 Debugger Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 5 Compiler Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 6 Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 7 Editor, Start/Home Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 8 Shortcut to Create New Project or Open Existing Project . . . . . . . . . . . . . . . . . . 4 9 Shortcut to History of Projects Opened Using Code::Blocks . . . . . . . . . . . . . . . . . 5 10 Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 11 File association window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 12 Click on Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 13 Welcome to the CodeBlocks-EP Setup Wizard screen . . . . . . . . . . . . . . . . . . . . . 7 14 License Agreement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 15 Information window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 16 Providing location for CodeBlocks-EP installation . . . . . . . . . . . . . . . . . . . . . . 8 17 Providing folder for CodeBLocks-EP shortcuts . . . . . . . . . . . . . . . . . . . . . . . . 9 18 Creating desktop shortcut for CodeBlocks-EP . . . . . . . . . . . . . . . . . . . . . . . . . 9 19 Installing CodeBlocks-EP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 20 Progress bar to show progress of installation . . . . . . . . . . . . . . . . . . . . . . . . . . 10 21 Progress bar to show progress of installation . . . . . . . . . . . . . . . . . . . . . . . . . . 11 22 Completing the installation process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 23 Code::Block IDE in Windows 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 24 New form template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 25 New console application wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 26 Selecting language for the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 27 Providing title and folder for the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 28 Selecting compiler for the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 29 Project node with no les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 30 Adding le to the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 31 Selecting type of le to be added in the project . . . . . . . . . . . . . . . . . . . . . . . . 17 32 Select checkbox to skip this window next time . . . . . . . . . . . . . . . . . . . . . . . . . 17 33 Select the language of the le added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 34 Details of le to be added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 35 Selecting the location and le name to be added . . . . . . . . . . . . . . . . . . . . . . . 19 36 Finalize details of le to be added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 37 Project node with + sign indicating it can be expanded . . . . . . . . . . . . . . . . . . . 20 38 Project node expanded . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 39 Writing code in editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 40 New form template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 41 New console application wizard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 42 Selecting language for the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 43 WinBGIm project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 44 Providing title and folder for the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 45 Selecting compiler for the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 46 Finalize details of le to be added (for line project) . . . . . . . . . . . . . . . . . . . . . . 24 47 Project node with + sign indicating it can be expanded . . . . . . . . . . . . . . . . . . . 24 48 Writing program in editor (line project) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 49 New from template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 50 Simplecpp project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 51 Providing title and folder for the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 52 Selecting compiler for the project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 53 Empty project node in Management window . . . . . . . . . . . . . . . . . . . . . . . . . 27 ii 54 Adding les to empty project node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 55 Selecting c/c++ source for project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 56 Selecting language for the le to be added . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 57 Giving location and name of the le to be added . . . . . . . . . . . . . . . . . . . . . . . 29 58 Finalize details of le to be added . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 59 Project node with + sign indicating it can be expanded . . . . . . . . . . . . . . . . . . . 30 60 opening le in editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 61 coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 62 Output of hello world project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 63 Output of line project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 64 Output of 3poly project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 65 Selecting Open under le in Menu Bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 66 Select le with .cbp extension to open an existing project . . . . . . . . . . . . . . . . . . 33 67 Code::Block in Ubuntu Software Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 68 Installing Code::Block using command line . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 69 Installing simplecpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 70 location of simplecpp/s++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 71 Copying the compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 72 Compiler and debugger settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 73 Changes to be made in Toolchain Executables . . . . . . . . . . . . . . . . . . . . . . . . . 38 74 Simplecpps directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 75 Additional Paths settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 76 Starting a new project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 77 Selecting the language for project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 78 Title for Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 79 Selecting Compiler to Compile the Program . . . . . . . . . . . . . . . . . . . . . . . . . . 41 80 Selecting simplecpp for projects including simplecpp . . . . . . . . . . . . . . . . . . . . . 42 81 Project Node when Expanded . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 82 Project Node when Expanded for helloworld.c (with code shown in editor) . . . . . . . . . 43 83 Project node when expanded for line.c (with code shown in editor) . . . . . . . . . . . . . 43 84 Project node when expanded for 3poly.cpp (with code shown in editor) . . . . . . . . . . . 44 85 Output for helloworld.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 86 Project build options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 87 Linker settings (Add Libraries) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 88 Interface for adding libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 89 Files/libraries to be added for graphic projects . . . . . . . . . . . . . . . . . . . . . . . . 46 90 Relative or absolute path for les/libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 91 libraries selected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 92 Libraries added to project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 93 Output for line.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 94 Output for 3poly.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 95 Select le with .cbp extension to open an existing project . . . . . . . . . . . . . . . . . . 50 iii 1 Introduction 1.1 Code::Blocks Code::Blocks is a free C++ IDE built to meet the most demanding needs of its users. [1]. Developed by The Code::Blocks Team, Code::Block is a free, open-source [2] and cross-platform IDE, which supports various free compilers. It is built around plugin framework, which allows functionality of Code::Block to be extended by installing appropriate plugins. Plugins required for compiling and debugging are already provided by default. This manual is prepared after installing and testing Code::Block on Ubuntu 12.04 1 and Windows 7. 2 1.2 Simplecpp Simplecpp is a package used to write and execute turtle based non-graphic/graphic programs. Simplecpp is a package developed by Prof. Abhiram Ranade at IIT Bombay and the book on An Introduction to Programming through C++ by Prof. Abhiram Ranade uses simplecpp to explain basic program- ming. For more information, please refer to the Chapter 1 of the book. Simplecpp is integrated with Code::Blocks and the simplecpp programs are tested with Code::Blocks on Windows 7 and Ubuntu 12.04. 2 Code::Block IDE Code::Block IDE is shown in gure 1 (Ubuntu 12.04). The main parts of Code::Block along with gures are discussed below Figure 1: Code::Block IDE 1 Ubuntu 12.04 with intel R Core TM i3-2120 CPU @ 3.30GHzx4 processor 4 GB RAM and 32-bit architecture and 64 bit architecture. 2 Windows 7 with intel R Core TM i3-2120 CPU @ 3.30GHzx4 processor 4 GB RAM and 32-bit architecture. 1 1. Menu bar: Menu bar is shown in gure 2. Menu bar can be toggled using F10. Few important link in menu bar are described below (described from left to right): Figure 2: Menu Bar (a) File: File menu link contains options to create a new project, open an already existing project, save le, save project, save workspace and save everything. It also contains options for closing a single le, closing a project or closing entire workspace. Other options in File are to print, export and quit the Code::Block (b) Edit: All the editing options required for editor are provided in Edit. (c) View: This menu link contains link for various perspectives and toolbars along with manager, logs, script console, status bar, full screen. (d) Project: Options related to the project is provided in this link which includes conguring build options along with options for adding les, removing les and autoversioning of project. (e) Build: Options for building the project, compiling a single le, running the project, building and running the project, rebuilding the project and cleaning the project is provided in build. Options for Building, rebuilding and cleaning the entire workspace is also provided along with options to select target (debug/release) and analysing error one by one. (f) Debug: Various Debugging options are provided in this link. (g) Plugins: Various plugins can be executed using this link. The link to manage the plugins is also provided here. (h) Settings: This contains link for various settings, setting related to Environment..., Editor..., Compiler and debugger..., Global Variables... and Scripting.... Script to be executed during Code::Block start-up can also be edited here. (i) Help: It contains information about Code::Block version, tips which can be toggled to be displayed at start-up and information about various plugins. 2. Main tool bar: Main tool bar is shown in gure 3. The buttons in Main toolbar are (from left to right): Figure 3: Main Toolbar (a) New File: For creating a new project. (b) Open: For opening an already created project. (c) Save : To save the le open in active editor (active editor means the editor tab in focus). (d) Save all les: To save all the les for the current/selected project. (e) Undo: To undo the executed action. (f) Redo: To redo the undone action. (g) Cut: To cut the selected/highlighted part in editor. (h) Copy: To copy the selected/highlighted part in editor. (i) Paste: To paste the cut/copy message in editor. (j) Find: To nd required text in the le in active editor. 2 (k) Replace: To replace required text in the le in active editor by some alternate text. 3. Debugger tool bar: Debugger tool bar is shown in gure 4. Debugger tool bar is used to debug the current/selected project. The buttons in debugger toolbar are (from left to right) Debug/Continue, Run to cursor, Next line,Next instruction, Step into, Step out, Stop debugger, Debugging Windows and Various info. You will be able to understand the use of this buttons by rigorous practise of debugging various projects. Figure 4: Debugger Toolbar 4. Compiler tool bar: Compiler tool bar is shown in gure 5 and is used in building/compiling/running the current/se- lected project. The buttons in Compiler toolbar are (from left to right): Figure 5: Compiler Toolbar (a) Build: For building the current/selected project. (b) Run: For running the current/selected project. (c) Build and run: For building and running the current/selected project. (d) Rebuild: For rebuilding the current/selected project. (e) Abort: For aborting the build process for the current/selected project. (f) Build target: For dening the type of build target for current/selected project, either debug or release. 5. Manager: Manager is shown in gure 6. It is labelled as Management. This window provides the list of all the open projects and les for easy access to any required le of any project. Figure 6: Manager 6. Editor: Editor is shown in gure 7. Here, all the coding work will take place. It is provided in tabbed 3 fashion to work with many les at once. When no project is open, the start page or home page is displayed in editor. The links given in start page is divided into two parts and explained below Figure 7: Editor, Start/Home Page 7. Figure 8 is short-cut on Starting page of IDE for creating a new project and opening an already created project. It also contains link for Code::Block forum where many useful resources can be found along with other useful discussions. The link points to url http://forums.codeblocks.org/. The second and third link points to BerLiOS Developer Site aims at enriching the Open Source community by providing a centralized place for Open Source Developers to control and manage Open Source Software Development. Figure 8: Shortcut to Create New Project or Open Existing Project 8. Figure 9 is short-cut to list of projects and les already opened in the IDE. It is link to few projects and les from history of IDE. 4 Figure 9: Shortcut to History of Projects Opened Using Code::Blocks 9. Logs: Log window is shown in gure 6. It is labelled as Logs & others. This window acts as log for various actions performed in IDE. All logs related to various activities can be checked at appropriate windows. Figure 10: Logs 5 3 Working with Code::Block on Windows In this section we discuss writing and building of three projects. First project (hello world.c) is a simple program which displays hello world on output. The second project (line.c) uses graphics.h header le and displays a line. The third project (3poly.cpp) uses simplecpp package and draws three polygons on output. For Windows (Windows 7) we will be using CodeBlocks-EP. CodeBlocks-EP comes with integrated WinBGIm (stands for Windows Borland Graphics Interface). In Windows, WinBGIm is required to run the programs with graphics.h header le. When CodeBlocks-EP is run for rst time a le association window is displayed as shown in gure 11. Select 3rd option Yes, associate Code::Blocks with c/c++ le types or 4th option Yes, associate Code::Blocks with every supported type(including project les from other IDEs) and click OK. Figure 11: File association window 3.1 Installation of Code::Block Code::Blocks used for windows is CodeBlocks-EP (stands for Code::Blocks - EDU Portable). WinBGIm (Borland Graphics Interface) required to run programs with graphics.h header is already integrated in CodeBlocks-EP. Code::Blocks-EP and SimpleCPP have been integrated so as to have a single click installation. Download Codeblocks-SimpleCPP Setup for Windows from https://www.dropbox.com/ s/fz7sl62565kvy7x/CB-Simplecpp-setup.exe The installation steps are as given below. 1. Download the installer from the link given above and browse to the appropriate directory where the installer is downloaded. Click the .exe le downloaded and window as shown in gure 12 will pop up. Click Run. Figure 12: Click on Run 6 2. A new window appears as shown in gure 13. Click Next. Figure 13: Welcome to the CodeBlocks-EP Setup Wizard screen 3. The third windows that appears is of license agreement as shown in gure 14. Select I accept the agreement and click Next. Figure 14: License Agreement 7 4. The next window displays some important information (shown in gure 15) regarding Code::Block- EP. Kindly go through information and click on Next. Figure 15: Information window 5. Next window asks for location where the CodeBlock-EP will be installed. The default location will be C:\Program Files\CodeBlocks-EP. Figure 16 shows the location provided for CodeBlocks- EP installation. Provide appropriate location and click on Next. Figure 16: Providing location for CodeBlocks-EP installation 8 Figure 17 shows the location provided for CodeBlocks-EP shortcuts in Start Menu Bar. Click on Next. Figure 17: Providing folder for CodeBLocks-EP shortcuts Select the checkbox Create a desktop icon as shown in Figure 18. Click Next. Figure 18: Creating desktop shortcut for CodeBlocks-EP 9 6. A new window displays stating that it is ready to install, which is shown in Figure 19. Click Install to proceed with installation. Figure 19: Installing CodeBlocks-EP Figure 20 shows installation progress with progress bar. Figure 20: Progress bar to show progress of installation 10 Figure 21 shows that you can continue with the setup. Click Next. Figure 21: Progress bar to show progress of installation 7. When the installation in complete a window is displayed shown in gure 22. If you want to launch the CodeBlock select Launch CodeBlocks-EP and click Finish. Figure 22: Completing the installation process 11 8. CodeBlocks IDE opens as shown in gure 23. Alternatively CodeBlocks-EP can be launched by double clicking the desktop icon created or clicking on its shortcut icon in Start Menu Bar. Figure 23: Code::Block IDE in Windows 7 12 3.2 Writing a new C/C++ Program This section is divided into writing non-graphic program, writing graphic program using graphics.h header le and writing graphic program using simplecpp package. 3.2.1 Non-Graphic Project 1. Click on New le button. The New from template window as shown in gure 24 opens. For non-graphics projects, select Console application. When the type of project is selected the Go button gets highlighted (top right corner). Click Go. Figure 24: New form template 2. When Go button is clicked a new window opens as shown in gure 25. Select checkbox Skip this page next time so that the page is not displayed again. Click Next 13 Figure 25: New console application wizard 3. Next window enables user to select the language to be used for project as shown in Figure 26. Select C/C++. Here, C is selected for helloworld project. Click Next. Figure 26: Selecting language for the project 14 4. Next windows enables user to provide title for the project and the folder where user wishes to create the project in. This is Shown in gure 27. After lling in the details click on Next. Figure 27: Providing title and folder for the project 5. Next window is used to select the compiler as shown in gure 28. By default GNU GCC Compiler is selected. Click on Finish. Figure 28: Selecting compiler for the project 15 6. The project node opens in manager window as shown in gure 29. The project node is empty and we have to add les to the project. Figure 29: Project node with no les 7. To add les to the project select project node and click on Filein menu bar, then click on File... in options in New. The process is shown in gure 30. Figure 30: Adding le to the project 16 8. New from template opens as shown in gure 31. For our example select C/C++ source and click on Go. Figure 31: Selecting type of le to be added in the project 9. A new window is displayed as shown in gure 32. Select the checkbox Skip this page next time so that it is not displayed again. Figure 32: Select checkbox to skip this window next time 17 10. Select the preferred language as shown in gure 33. We have selected C for our helloworld example. Figure 33: Select the language of the le added 11. Figure 34 shows the window that opens to add the le. click on ... beside Filename with full path. Figure 34: Details of le to be added 18 A window as shown in gure 35 opens. Select the folder of the project and enter le name to be added. Click on Save. Figure 35: Selecting the location and le name to be added When Save button is clicked the window in gure 34 opens again with full path and name of the le. Select Debug and Release. Shown in gure 36. Click on Finish. Figure 36: Finalize details of le to be added 19 12. Management window now shows project node which can be expanded. Click on project node and double click on hello.c to open the le in editor shown in gure 37 and gure 38 Figure 37: Project node with + sign indicating it can be expanded Figure 38: Project node expanded 13. When the hello.c le opens in editor, user can start coding. Code is shown in gure 39. Figure 39: Writing code in editor 20 3.2.2 Graphic Project using graphics.h 1. Click on New le button. The New form template window as shown in gure 24 opens. For graphics projects, select WinBGIm project. Go button gets highlighted (top right corner). Click on Go. Figure 40: New form template 2. When Go button is clicked a new window opens as shown in Figure 41. Select checkbox Skip this page next time so every time new project is created this window should not come. Click on Next. If this step has been performed earlier, this window will not be displayed. Figure 41: New console application wizard 3. Next window enables user to select the language to be used for project as shown in gure 42. For 21 the example hello world used in this manual select C and click on Next. Figure 42: Selecting language for the project 4. Next window asks the user to select type of project. The options are Add Console and Graphics only as shown in gure 43. Select Graphics only and click on Next. Figure 43: WinBGIm project 22 5. Next windows enables user to provide title for the project and the folder where user wishes to create the project. This is Shown in gure 44. After lling in the details click on Next. Figure 44: Providing title and folder for the project 6. Next window is used to select the compiler as shown in gure 45. By default GNU GCC Compiler is selected. Click on Finish. Figure 45: Selecting compiler for the project 23 7. The project node opens in manager window. The project node is empty and we have to add les to the project. To add les to the project select project node and click on File in menu bar, then click on File... in options in New. New from template opens as shown in gure 31. For our example select C/C++ source and click on Go. A new window pops out which have a checkbox Skip this page next time. Select the checkbox so this window should not open every time a new le is added to the project. Select the preferred language. For our example select C. A new window opens which allows user to add the les to the project. Click on ... beside Filename with full path. This is shown in Figure 34. A window as shown in gure 35 opens. Select the folder of the project and enter le name to be added. Click on Save (see steps 6-11 of section 5.2.1.1). Select Debug and Release. Shown in gure 46. Click on Finish. Figure 46: Finalize details of le to be added (for line project) 8. Management window now shows project node which can be expanded (gure 47). Figure 47: Project node with + sign indicating it can be expanded 24 9. Click on project node and double click on line.c to open the le in editor. When the line.c le opens in editor, user can start coding. Code is shown in gure 48. Figure 48: Writing program in editor (line project) 3.2.3 Graphic Project using simplecpp 1. Click on New le button. The New form template window as shown in gure 24 opens. For graphics projects using simplecpp, select Simplecpp project. Go button gets highlighted (top right corner). Click on Go. Figure 49: New from template 25 2. Next window asks the user to select type of project. The options are Add Console and Graphics only as shown in gure 50. Select Graphics only and click on Next. Figure 50: Simplecpp project 3. Next windows enables user to provide title for the project and the folder where user wishes to create the project. This is Shown in gure 51. After lling in the details click on Next. Figure 51: Providing title and folder for the project 26 4. Next window is used to select the compiler as shown in gure 45. By default GNU GCC Compiler is selected. Click on Finish. Figure 52: Selecting compiler for the project 5. The project node opens in manager window. The project node is empty as shown in gure 53. We have to add les to the project. Figure 53: Empty project node in Management window 27 6. To add les to the project select project node and click on File in menu bar, then click on File... in options in New. Shown in gure 54. Figure 54: Adding les to empty project node 7. New from template opens as shown in gure 55. For our example select C/C++ source and click on Go. Figure 55: Selecting c/c++ source for project 28 8. Select the preferred language. For our example select C++ (gure 56). Figure 56: Selecting language for the le to be added A new window opens which allows user to add the les to the project. Click on ... beside Filename with full path. This is shown in Figure 34. A window as shown in gure 57 opens. Select the folder of the project and enter le name to be added. Click on Save. Figure 57: Giving location and name of the le to be added 29 In next window select Debug and Release. Shown in gure 58. Click on Finish. Figure 58: Finalize details of le to be added 9. Management window now shows project node which can be expanded (gure 59). Figure 59: Project node with + sign indicating it can be expanded 30 10. Click on project node and double click on 3poly.cpp to open the le in editor. When the 3poly.cpp le opens in editor (gure 60), user can start coding. Code is shown in gure 61. Figure 60: opening le in editor Figure 61: coding 31 3.3 Building the Project The process to build the graphics and non-graphics project is same, just Click on Build and then Run (or directly on Build and run). The output for the program used is shown in gure 62 for hello world project, gure 63 for line project and gure 64 for 3poly project. Figure 62: Output of hello world project Figure 63: Output of line project Figure 64: Output of 3poly project 32 3.4 Opening existing program/project Click on Open button 65. Browse to desired directory and open the le with .cbp extension as shown in gure 66. Figure 65: Selecting Open under le in Menu Bar Figure 66: Select le with .cbp extension to open an existing project 33 4 Working with Code::Block on Ubuntu In this section we discuss writing and building three projects. First project (hello world.c) is simple program which displays hello world on output. The other project (line.c) uses graphics.h header le and displays a line. graphics.h is not supported by gcc, which is the default C/C++ compiler on Ubuntu. The third project (3poly.cpp) uses simplecpp package and draws three polygons on output. We have to install some packages, include few libgraph libraries during building the project with graphic.h header le. 4.1 Installation of Code::Blocks Pre-requisite for installing Code::Block is libwxgtk which is available in ubuntu software center. This package will be already installed in your system 3 . It is also advised to install build-essential package and update repository list. In case the libwxgtk is not installed, it can be installed from command line using command given in listing 1 [3]. Code::Block is available in Ubuntus repository. It can be installed using Ubuntu Software Center or it can also be installed using command line as given in listing 2. 1 $ sudo aptget i n s t a l l l i bwxgtk2 .80 2 $ sudo aptget i n s t a l l bui l de s s e n t i a l 3 $ sudo aptget update Listing 1: Installing libwxgtk2.8-0 using command line 1 $ sudo aptget i n s t a l l codebl ocks Listing 2: Installing Code::Blocks using command line Figure 67: Code::Block in Ubuntu Software Center Figure 68: Installing Code::Block using command line 3 Check for the libwxgtk version available for your Ubuntu, minimum required version for Code::Block to run is 2.0, version available on Ubuntu 12.04 is 2.8 34 Figure 67 shows Code::Block along with its logo in Ubuntu Software Center, while gure 68 shows installation of Code::Block using command line. In gure 68 four underlined lines are: line 1: Command to install the Code::Block. line 2: Packages installed along with Code::Block. line 3: Packages suggested along with Code::Block installation. libwxgtk2.8 4 package as mentioned above is already installed in your system. libwxgtk2.8-dev package is not required. line 4: Final list of packages that will be installed in your system When command line prompts for [Y/n] enter y and press enter. When Code::Block is run for rst time, It asks for default compiler. Select the appropriate compiler to proceed further. We have used GNU GCC Compiler. 4.2 Installation of packages for graphics.h header le GCC compiler does not support graphics.h, conio.h, windows.h and few other header les that works on Turbo C or Borland C. graphics.h header les enables programmer to write simple c/c++ graphics programs. In Ubuntu, gcc is default c/c++ compiler, thus, we have to make some settings, for gcc to support graphics[4]. We will start with installing some packages from command line as given in listing 3 1 $ sudo aptget i n s t a l l l i bs dl image1 . 2 l i bs dl image1.2dev gui l e 1.8 gui l e 1.8dev l i b s d l 1 . 2 debi an l i ba r t 2.0dev l i b a u d i o f i l e dev l i bes d0 dev l i bdi r e c t f b dev l i bdi r e c t f b ext r a l i bf r e e t ype 6 dev l i bxe xt dev x11protoxextdev l i bf r e e t y pe 6 l i baa1 l i baa1 dev l i bs l ang2 dev l i bas ound2 l i basound2dev Listing 3: Installing required packages to support graphics.h After the above mentioned packages are installed, download the libgraph package (download link given in footnote 5 ) and untar it in home directory. For this untarring tool must be installed on system. Open the command line and follow the instructions given in listing 4. 1 $ cd l i bgr aph 1. 0. 2 2 $ . / c onf i gur e 3 $ sudo make 4 $ sudo make i n s t a l l 5 $ sudo cp / usr / l o c a l / l i b / l i bgr aph . / usr / l i b Listing 4: Installing libgraph package using command line 4.3 Installation of Simplecpp Download the simplecpps tar package and untar it. The tar le can be downloaded from the link given in footnote 6 . Change to the simplecpp directory and run the command sh congure.sh. Shown in gure 69. 1 $ cd DIRECTORY WHERE Simplecpp. tar IS DOWNLOADED 2 $ t ar xvf Si mpl ecpp . t ar 3 $ cd si mpl ecpp/ 4 $ sh c onf i gur e . sh Listing 5: Installing simplecpp package using command line 4 Details about above mentioned packages can be found at http://packages.ubuntu.com/precise/allpackages. 5 http://download.savannah.gnu.org/releases/libgraph/libgraph-1.0.2.tar.gz 6 https://www.dropbox.com/s/dhqvlp6kesu3w8x/Simplecpp.tar 35 Figure 69: Installing simplecpp The last line in installation process mentions To compile use: /home/sandeep/Projects/reports/code- blocks/simplecpp/s++ lename.cpp. The path to simplecpp/s++ will vary from user to user as per users machine, this path is location of simplecpp/s++ on the machine. Shown in gure 70. Figure 70: location of simplecpp/s++ For the project using simplecpp package some setting has to be changed. The steps to make the required changes are as given below. 1. Open Code::Blocks and click on Setting and select Complier and Debugger.... A window labelled Compiler and debugger settings will open as shown in Figure 72. By default the selected compiler is GNU GCC Compiler. Click Copy highlighted with red box in gure 72. A window as shown in gure 71 will open. Write simplecpp and click Ok. Figure 71: Copying the compiler 36 2. A message stating change the appropriate setting in Toolchain executable is displayed, which is shown in gure 72. 3. Click on Toolchain executables tab highlighted with red box in gure 72. Figure 72: Compiler and debugger settings 37 4. Change the compiler path of Code::Blocks to that of simplecpp. The steps are given below. 5. Click all ... buttons highlighted with red box in gure 73) on by one. Change all the settings as shown in gure. When ... is clicked, browse to the /simplecpp directory. This is shown in gure 74. s++ and makes++ are available in /simplecpp/ folder. libsprite.a is available in /simplecpp/lib/ folder. Figure 73: Changes to be made in Toolchain Executables 6. To summarize, the list of all the elds that need to be changed is given below (a) Compilers installation directory: /simplecpp/ (b) C compiler: /simplecpp/s++/ (c) C++ compiler: /simplecpp/s++/ (d) Linker for Dynamic libs: /simplecpp/s++/ (e) Linker for static libs: /simplecpp/s++/libsprite.a (f) Make program: /simplecpp/makes++/ 7. When all the required elds are changed, click on Additional Paths shown in red block in gure 73. 38 Figure 74: Simplecpps directory 8. In Additional Paths click on Add shown in red block in gure 75. Browse to /simplecpp/ directory and click on Ok. User will return on Compiler and debugger setting window. Click Ok again to exit settings and return to editor. Figure 75: Additional Paths settings 39 4.4 Writing a new c/c++ program 1. Click on New le button. The New from template window opens as shown in gure 76. Select the type of project you want to program in. When the type of project is selected the Go button gets highlighted (top right corner). Select Console application and click on Go. Figure 76: Starting a new project 2. When Go button is clicked, a new window opens as shown in gure 77. This window enables the user to select the required language to proceed. Select the language and click on next. Figure 77: Selecting the language for project 40 3. The subsequent windows enable the user to provide title for the project and the folder where user wishes to create the project in. This is shown in gure 78. After lling in the details click Next. Figure 78: Title for Project 4. Next window is to select the compiler. By default GNU GCC Compiler is selected. In this window, the user can change the compiler to be used as per the use and requirements. Non-graphic and Programs including graphics.h header le: Select GNU GCC Compiler (gure 79) Simplecpp programs: Select Simplecpp (gure 80) . Click on Finish. Figure 79: Selecting Compiler to Compile the Program 41 Figure 80: Selecting simplecpp for projects including simplecpp 5. Now, the project node opens in manager window as shown in gure 81. Project node can be expanded to see the main.c le. Figure 81: Project Node when Expanded 42 When main.c le is clicked, it opens in editor as shown in gure 82 for hello world project. Figure 82: Project Node when Expanded for helloworld.c (with code shown in editor) 6. Code used for graphics program (line) is shown in gure 83. Figure 83: Project node when expanded for line.c (with code shown in editor) 43 7. Code used for simplecpp program (3poly) is shown in gure 84. Every project involving simplecpp has to include simplecpp package as seen in rst line of the code. Figure 84: Project node when expanded for 3poly.cpp (with code shown in editor) 8. While using Code::Blocks for the rst time, some extra windows will be displayed. In this manual only the important windows are shown. 4.5 Building the Project 4.5.1 Non-Graphics Project After the code is written, project needs to be built. Click on build and run from compiler bar. Output is as shown in gure 85. Figure 85: Output for helloworld.c 4.5.2 Graphics Project using graphics.h To build a program involving graphics.h, it is recommend to enable full logging in Code::Block. Full logging also helps in better debugging. Steps to enable full Full logging in Code::Block is given in appendix C 44 Now the project using graphics.h (line) has to be linked with libraries copied in /usr/lib while installing libgraph package. The steps to link the libraries and build the project is given below. 1. Right click on project node in Manager box and select build options... A new window Project build options as shown in gure 86 pops up. Option to change the compiler selected for the project is also available in this window. Figure 86: Project build options 2. In Project build options window, click on linker settings tab. This tab is shown in gure 87. Figure 87: Linker settings (Add Libraries) 45 3. In linker settings tab click on Add button under Link libraries box. When Add button is clicked a small window titled Add library opens as shown in gure 88. Figure 88: Interface for adding libraries 4. Click on dotted button to right of box. A new window opens as shown in gure 89. This window enables user to browse to appropriate folder and to select required library. Browse to the /usr/lib directory. All the required library les are not visible. Select all les in dropdown placed at the bottom, to enable visibility of all types of les. Select all the libgraph .* les, except libgraph.la le. Files to be selected are shown in the gure 89. Figure 89: Files/libraries to be added for graphic projects 46 5. Libraries shown in Ubuntu 12.04, 32-bit OS are libgraph.a, libgraph.so, libgraph.so.1, libgraph.so.1.0.2, libgraph.so.4 and libgraph.so.4.0.0. In Ubuntu 12.04, 64-bit OS libraries libgraph.so.4 and lib- graph.so.4.0.0 are not available. Select all the libgraph.* les except libgraph.la 6. After selecting all the required libraries click on Open. A new window labelled Question will open asking Keep this as relative path as shown in gure 90. Click on No. Figure 90: Relative or absolute path for les/libraries 7. The libraries will be linked using absolute path as shown in gure 91. Click on Ok. Figure 91: libraries selected 47 8. We are now re-directed to linker settings tab. The added libraries are shown. In Other linker options window write -lgraph . The nal setup is shown in gure 92 with all the required 6 libraries and -lgraph. Click on Ok to get back to editor. Now we are ready to build the project with graphics.h header le Figure 92: Libraries added to project 9. Now click the build and run button from compiler bar and output will be displayed as shown in gure 93. Figure 93: Output for line.c 48 4.5.3 Graphics Project using simplecpp To build a program involving simplecpp, it is recommend to enable full logging in Code::Block. Full logging also helps in better debugging. Steps to enable full Full logging in Code::Block is given in appendix C Click the build and run button from compiler bar and output will be displayed as shown in gure 94. Figure 94: Output for 3poly.cpp 49 4.6 Opening Existing Program/Project Click File and select Open. Browse to desired directory and select the le with .cbp extension as shown in gure 95 and click on Open. Figure 95: Select le with .cbp extension to open an existing project 50 References [1] The Code::Block Team. Code::block homepage http://www.codeblocks.org/. [2] The Code::Block Team. Gpl v3.0 license http://www.codeblocks.org/license. [3] Installing code::block on ubuntu http://wiki.codeblocks.org/index.php?title=Installing_Code::Blocks_from_source_on_ Linux. [4] Eternal thinker: How to use graphics.h in ubuntu? http://blog.eternal-thinker.com/2010/09/how-to-use-graphicsh-in-ubuntu.html. [5] Code::block faqs http://wiki.codeblocks.org/index.php?title=FAQ. 51 A Code used for Windows A.1 helloworld.c 1 #i nc l ude <s t di o . h> 2 3 i nt main ( ) 4 { 5 pr i nt f ( Hel l o worl d ! \ n) ; 6 r et ur n 0; 7 } Listing 6: helloworld.c A.2 line.c 1 #i ncl ude <s t di o . h> 2 #i ncl ude <gr aphi cs . h> 3 i nt main ( ) 4 { 5 i nt gd , gm; gd=DETECT; 6 i ni t gr aph(&gd,&gm, NULL) ; 7 l i n e ( 50 , 50 , 80 , 80) ; 8 del ay ( 5000) ; 9 r et ur n 0; 10 } Listing 7: line.c A.3 3poly.cpp 1 #i nc l ude <si mpl ecpp> 2 3 main program{ 4 i ni t Canvas ( ) ; 5 Tur t l e t1 , t2 , t3 ; 6 7 t2 . l e f t ( 120) ; 8 t3 . l e f t ( 240) ; 9 10 r epeat ( 8) { 11 t1 . f orward ( 100) ; 12 t2 . f orward ( 100) ; 13 t3 . f orward ( 100) ; 14 15 t1 . l e f t ( 360. 0/8) ; 16 t2 . l e f t ( 360. 0/8) ; 17 t3 . l e f t ( 360. 0/8) ; 18 } 19 wai t ( 5) ; 20 } Listing 8: 3poly.cpp 52 B Code used for Ubuntu B.1 helloworld.c 1 #i nc l ude <s t di o . h> 2 3 i nt main ( ) 4 { 5 pr i nt f ( Hel l o worl d ! \ n) ; 6 r et ur n 0; 7 } Listing 9: helloworld.c B.2 line.c 1 #i nc l ude <s t di o . h> 2 #i nc l ude <gr aphi cs . h> 3 4 i nt main ( ) 5 { 6 i nt gd , gm; gd=DETECT; 7 i ni t gr aph(&gd,&gm, NULL) ; 8 l i n e ( 50 , 50 , 80 , 80) ; 9 del ay ( 5000) ; 10 11 r et ur n 0; 12 } Listing 10: line.c B.3 3poly.cpp 1 #i nc l ude <si mpl ecpp> 2 3 main program{ 4 i ni t Canvas ( ) ; 5 Tur t l e t1 , t2 , t3 ; 6 7 t2 . l e f t ( 120) ; 8 t3 . l e f t ( 240) ; 9 10 r epeat ( 8) { 11 t1 . f orward ( 100) ; 12 t2 . f orward ( 100) ; 13 t3 . f orward ( 100) ; 14 15 t1 . l e f t ( 360. 0/8) ; 16 t2 . l e f t ( 360. 0/8) ; 17 t3 . l e f t ( 360. 0/8) ; 18 } 19 wai t ( 5) ; 20 } Listing 11: 3poly.cpp 53 C Enabling full logging in Code::Block Logging can be used extensively for many purposes including debugging and proling. Steps to enable full logging in Code::Block [5] are as mentioned below. Settings Compiler and debugger settings Global compiler settings check Selected compiler Other settings Compiler logging Full command line 1. Click on Setting in Menu bar and select Compiler and debugger settings. 2. Select Global compiler settings from list on left panel. The default compiler selected is shown above in right panel. Here we can change the default compiler. 3. Click on right arrow beside tabs to select Other settings. 4. The rst option is of Compiler logging, select Full command line. 54