Installing Code::Blocks from source on Windows
Note for RC2 users
The older Code::Blocks RC2 does not support global compiler variables which were added after RC2 was released and is unable to read project files generated with post-RC2 versions. To build Code::Blocks, you need a post-RC2 build, such as 8.02 or any of the nightly builds obtainable by [/index.php?board=20.0 searching the forum].
Do not use the barebones MinGW with GCC 4.5.1 as you'll run (with this specific version) into a linker bug (which happened to me on Vista SP1 32-bit on 2011-02-28); the solution is to use the TDM-GCC 4.5.1 package, or later.
- since 02 April 2011 wxWidgets 2.8.12
- since 28 March 2009 wxWidgets 2.8.10
- since 18 October 2008 wxWidgets 2.8.9
- since 19 July 2008 wxWidgets 2.8.8
- since 28 November 2007 wxWidgets 2.8.7
- since November 2007 wxWidgets 2.8.6
- since May 2007 wxWidgets 2.8.4
For latest infos check forum: [/index.php?topic=3299.0 Important changes to the nightly builds]
You do not need MSYS (in fact, if you have MSYS, make sure it is not in your PATH when building wxWidgets).
You can get the c::b source from svn or download it directly from http://sourceforge.net/p/codeblocks/code -> "Download Snapshot"
In order to check out the Code::Blocks sources you will need a SVN client. For convenience, it is recommended that you install TortoiseSVN on your machine, as this is a lot more comfortable. However, if you get a bad feeling when some program is messing with your Explorer menu, then you can use the svn command-line client equally well.
It is generally a good idea to install the command-line client (and adding it to PATH) even if you use TortoiseSVN for convenience. The autorevision tool which is used during the build of Code::Blocks makes use of the svn binary if it is available. This is preferable to the manual parsing of the entries file that is used as fall-back.
Please do note that working copies checked out with the 1.4 version of Subversion are no longer compatible with earlier versions (Subversion will transparently update existing repositories).
The built-in fall-back mechanism in autorevision has been updated to the new 1.4 format and will no longer work with the old format.
Therefore, if you use a Subversion client from the 1.0-1.3 line, you must put the command line tool into PATH for a successful build.
If you use Subversion 1.4, then it is good practice nevertheless, but you can do without, too.
If you want to have the SVN number (indicated by the arrow) in your Code::Blocks custom build:
You should make sure that the svn.exe command is in the PATH of your Windows' system. A command line SVN package can be download here CollabNet Subversion Command-Line Client v1.9.2 (for Windows). If a command-line SVN program is available during the build process then the SVN version will be integrated into the output files.
You'll also need a working 'zip' program. If you have the version listed on our tools page, you'll be fine.
The zip program coming with cygwin will not work properly. You do not need WinZip.
Make sure the zip binary is in your PATH so the update.bat script will be able to find it (alternatively, you can edit the batch file, setting the ZIPCMD variable to something else).
The easiest way is to put zip.exe into bin inside your MinGW installation directory (that folder is normally in the path).
You will also (obviously) need the Code::Blocks sources.
If you prefer a GUI SVN client, you can use TortoiseSVN, make a folder where you want to store the sources, right-click on the folder, and select "SVN Checkout," as shown:
In the URL of the repository box, enter svn://svn.code.sf.net/p/codeblocks/code/trunk and hit the OK button. The checkout directory will be automatically filled in depending on which folder you used the context menu "SVN Checkout" command in. The example given here is "C:\cb_svn".
If you do not with to use a GUI SVN client then a command-line equivalent to the above is to use the svn command (for convenience you likely want it in your PATH), open a command prompt, make a folder, change into that folder, and then checkout a copy of the repository:
mkdir codeblocks-head cd codeblocks-head svn checkout svn://svn.code.sf.net/p/codeblocks/code/trunk
Compile wxWidgets in Unicode mode
After unpacking the zip file to a directory of your choice, open a cmd prompt, and navigate to the folder build/msw inside the wxWidgets folder. Use the following commands to compile wxWidgets:
set path=c:\mingw\bin;c:\mingw\mingw32\bin mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1 clean mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1
This assumes your MinGW installation is in C:\mingw. Use a different path if you installed MinGW somewhere else.
You will see a lot of warning messages during compilation. Don't worry, this is normal, you are compiling wxWidgets. The build process may take 10-30 minutes, depending on your computer's speed.
If you are using a recent version of MinGW you may find that the object files are too large and that the linker runs out of memory. To fix this problem you need to edit config.gcc so that inline functions are not exported, by modifying the CFLAGS and CXXFLAGS lines to:
CFLAGS ?= -fno-keep-inline-dllexport
CXXFLAGS ?= -fno-keep-inline-dllexport
remark: If you want to use wxWidgets not only for building Code::Blocks, but also for writing wxWidgets programs, and if you want to use the debugger in those programs, you have to compile a debug build of wxWidgets as well. Use the same commands as for the release build, but replace "release" by "debug".
To reduce the size of your wxWidgets library, you can disable features which are not used by Code::Blocks. However, you should not do this unless you know what you are doing. You have to delete the generated setup.h from lib/gcc_dll/msw/wx before building, because your changes to include/wx/msw will otherwise not be honoured.
Now, before this step, you have prepared all the stuff to build code::blocks. It's very interesting that we use code::blocks to build code::blocks binaries.
Open the project file CodeBlocks.cbp.
- You will be prompted to define the global variable $(#wx). Enter the location where you unpacked wxWidgets.
- You will also be prompted to enter the global variable cb_release_type. Here you can add compiler optimization or debug-flags. Enter -g in the base field.
Hit the blue gear and lean back. Compilation may take 3-5 minutes, depending on the speed of your computer.
Copy wxWidgets support DLL
After the compilation has finished, copy lib\gcc_dll\wxmsw28u_gcc_custom.dll from the wxWidgets directory to the src\devel directory inside the Code::Blocks source folder (it will also work if you keep a copy of that library in your Windows folder or anywhere in your system path, but this is generally not recommended because you can get into dll hell).
Runing script file
Run src\update.bat (located in the root source directory). This will pack the resource files and copy libraries and plugins to their correct locations.
The stripped ("production") executable is found in output folder together with all libraries and data files. If you want a version with debug symbols instead (caution: huge size!), use the one found in the devel folder.
Congratulations, you own a freshly built version of Code::Blocks!
Note for future updates
Go to the Code::Blocks root directory and run svn update (or use TurtoiseSVN to the same effect).
Then open and build the project as described before (and any contrib plugins that you wish to use), and re-run src\update.bat.
Copy the folder output to where you want Code::Blocks to reside.
Compile contributed (or your own) plugins
The workspace file ContribPlugins.workspace contains the project files for all contributed plugins. Open that workspace and compile the plugins which you would like to use (or select "Build Workspace" from the context menu if you want them all).
When you open the contrib plugins workspace, you will be asked to define the $(#cb) global compiler variable. This is the path that contains the sdk folder normally this is codeblocks\src. The build process uses this information to place the plugins and data files into the correct place. Enter the location of the Code::Blocks sources in the same way as for the $(#wx) variable earlier.
Don't forget to run update.bat again after building the contrib plugins.
Compile wxWidgets in ANSI mode
After unpacking the zip file to a directory of your choice, open a cmd prompt, and navigate to the folder build/msw inside the wxWidgets folder. Use the following commands to compile wxWidgets
set path=c:\mingw\bin;c:\mingw\mingw32\bin mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=0 clean mingw32-make -f makefile.gcc SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=0
Open the project CodeBlocks.cbp. You will be prompted to define the global variable $(#wx) if you have not used it before. Enter the location where you unpacked wxWidgets.
Important: The project file is set to compile an Unicode version of Code::Blocks by default. To make an ANSI build, you have to make the following two changes to build options before compiling: 1. In the "Compiler" tab, under "#defines", remove the entry wxUSE_UNICODE. 2. Under "Custom variables", set the variable WX_SUFFIX to empty (default value: u).
After the compilation has finished, copy wxmsw28u_gcc_custom.dll from lib\gcc_dll inside the wxWidgets directory to the devel directory inside the Code::Blocks source folder (it will also work if you keep a copy of that library in your Windows folder or anywhere in your system path, but this is generally not recommended because you can get into dll hell). Run update.bat (located in the root source directory). This will pack the resource files and copy libraries and plugins to their correct locations. The location of executable is src\output in C::B tree. From here you'll not need the nightly build anymore.
One little note for svn updates and rebuilds : just go into the codeblocks root directory and do svn update (or use Turtoise svn).
Then run the src/output/codeblocks.exe, reload project, build it, reload plugins workspace, build it, quit codeblocks and re-run update.bat. You'll have an up-to-date C::B in 3 minutes !
Copy the folder output to where you want Code::Blocks to reside.
Compile contributed (or your own) plugins
The workspace file ContribPlugins.workspace contains the project files for all contributed plugins. Open that workspace and compile the plugins which you would like to use (or select "Build Workspace" from the context menu if you want them all). Don't forget to run update.bat again after building the contrib plugins.
Note that the Nassi Shneiderman plugin (part of the contrib plugins) has a dependency on boost which is needed to compile this plugin. Boost does not need to be compiled therefore.