Difference between revisions of "FAQ"

From Code::Blocks
Line 253: Line 253:
 
*http://msdn2.microsoft.com/en-us/library/aa380599.aspx
 
*http://msdn2.microsoft.com/en-us/library/aa380599.aspx
 
*http://www.cygwin.com/cygwin-ug-net/windres.html
 
*http://www.cygwin.com/cygwin-ug-net/windres.html
 +
 +
=== Q: Code::Blocks does not force relink if the library is changed? ===
 +
 +
'''A:''' Open ''Project->Properties...->Build targets (tab)'' and select the executable.  Click ''Dependencies...'' and add the name of the library (including its relative path) to ''External dependency files''. Also see [[The build process of Code::Blocks#Using project dependencies|inter-project dependencies]].
 +
 +
''Example:'' <tt>output\myLibrary\libdostuff.a</tt>
 +
 +
=== Q: How do I report a compilation problem on the forums? ===
 +
 +
'''A:''' Try building the project from command line. If the same error comes up, it is a problem with either the source file, the compiler, or the compiler setup. If this is the case, you are unlikely to receive support for it on the Code::Blocks forums, however, [[#Q: How do I troubleshoot an compiler problem?|How do I troubleshoot an compiler problem?]] may help.
 +
 +
If it works fine building from command line, it is either a problem with your project, Code::Blocks' setup, or possibly an actual bug. When posting this problem, include the name of your compiler, operating system, Code::Blocks version, compiler log (go to ''Settings->Compiler and debugger...->Build options (tab)'' and check ''Save build log'' and ''Always output the full command line''), and, if it caused Code::Blocks to crash, the <tt>codeblocks.RPT</tt> file (located in the Code::Blocks installation directory).
 +
 +
''Template: Paste the following template into your post, editing the relevant sections.''
 +
OS = ''MyOperatingSystem''
 +
CB Version = ''Code::BlocksVersionNumber''
 +
Compiler = ''CompilerName CompilerVersionNumber''
 +
 +
''Description of relevant events.''
 +
 +
Build log:
 +
[code]
 +
''Paste build log here''
 +
[/code]
 +
 +
Crash report:
 +
[code]
 +
''If Code::Blocks crashed, paste the contents of'' codeblocks.RPT ''here.''
 +
[/code]
 +
 +
=== Q: All of the Build related options are grayed out? ===
 +
 +
'''A:''' Code::Blocks checks the file extension for individual files before allowing them to be compiled. Save your file with the correct file extension (<tt>*.c</tt> or <tt>*.cpp</tt>).
 +
 +
More often it is useful to [[Creating a new project|create a project]] so that Code::Blocks can manage the entire build.
 +
 +
=== Q: My build fails with multiple ''undefined reference'' errors? ===
 +
 +
''Example:''
 +
undefined reference to `WSACleanup@8
 +
undefined reference to `WSACleanup@0
 +
 +
'''A:''' Most of the time it is because the required library is not linked with your project. Go to ''Project->Build options...->Linker settings (tab)'' and add the required library or libraries.
 +
 +
If the error includes a line number, it is likely that this is a problem with your code. Track down down your function declarations and implementations. Ensure they all match up, are spelled correctly, and have the correct scope resolution.
  
 
== Settings ==
 
== Settings ==
Line 262: Line 307:
 
From the 2006/11/30 nightly build, you can also add, in the project properties, directories to be searched when locating a file to parse  .Right click on the project, click on Properties and select the C/C++ parser options.
 
From the 2006/11/30 nightly build, you can also add, in the project properties, directories to be searched when locating a file to parse  .Right click on the project, click on Properties and select the C/C++ parser options.
  
They 're mostly useful when you don't add compiler search dirs in build options but use backticked expressions (e.g. `freetype-config --cflags`). In this case, the parser is not aware of where the source files are located. So, by manually adding the directory in the parser's search dirs you 're actually helping the parser find the files.
+
They're mostly useful when you don't add compiler search dirs in build options but use backticked expressions (e.g. `freetype-config --cflags`). In this case, the parser is not aware of where the source files are located. So, by manually adding the directory in the parser's search dirs you're actually helping the parser find the files.
  
Of course, backticked expressions are not the only reason these parser search dirs are useful. As another example, I have a set of projects in a workspace. To minimize maintenance overhead, I 'm using build scripts to configure these projects. Now, although build scripts are an awesome feature, the C/C++ parser faces the same problem: it doesn't know where to search for files. The parser search directories come to the rescue again.
+
Of course, backticked expressions are not the only reason these parser search dirs are useful. As another example, I have a set of projects in a workspace. To minimize maintenance overhead, I'm using build scripts to configure these projects. Now, although build scripts are an awesome feature, the C/C++ parser faces the same problem: it doesn't know where to search for files. The parser search directories come to the rescue again.
  
 
==== Q: How do I make Code::Blocks portable? ====
 
==== Q: How do I make Code::Blocks portable? ====
Line 328: Line 373:
  
 
Also, see [/index.php/topic,10360.0.html Portable Code::Blocks] for more details.
 
Also, see [/index.php/topic,10360.0.html Portable Code::Blocks] for more details.
 +
 +
=== Q: Code::Blocks option ''xyz'' is missing? ===
 +
 +
'''A:''' Many features of Code::Blocks are implemented by means of plugins. First open ''Plugins->Manage plugins...'' and ensure that the one you are trying to use is not disabled. If plugin ''xyz'' is not in the list, it is possible that you removed/disabled it on installation. To acquire the plugin, [[Installing Code::Blocks|reinstall Code::Blocks]] or rebuild from source (double checking that the desired plugin is included).
  
 
== Issues and Workaround ==
 
== Issues and Workaround ==
  
=== Q: Sometime, in the text editor, space bar triggers Code Completion, how do I fix that ? ===
+
=== Q: Sometime, in the text editor, space bar triggers Code Completion, how do I fix that? ===
  
 
'''A:''' Informations found on the forum.
 
'''A:''' Informations found on the forum.
Line 385: Line 434:
 
if it's not enough you can try :
 
if it's not enough you can try :
 
  setxkbmap  -option nbsp:none -model pc 105 -layout fr -variant latin 9
 
  setxkbmap  -option nbsp:none -model pc 105 -layout fr -variant latin 9
 
  
 
=== Q: IDE is drawing the text from Right to Left? ===
 
=== Q: IDE is drawing the text from Right to Left? ===
  
 
'''A:''' Uncheck "Settings -> Environment -> View -> Internationalization" and restart Code::Blocks
 
'''A:''' Uncheck "Settings -> Environment -> View -> Internationalization" and restart Code::Blocks
 +
 +
=== Q: All the options in the debug menu are grayed out? ===
 +
 +
'''A:''' Code::Blocks can only use integrated debugging on an active project.  Start a [[Creating a new project|new project]] and [[Creating a new project#Adding a pre-existing file|add the file]] to it. Also see [[debugging with Code::Blocks]].
 +
 +
''Note: Code:Blocks only supports the GNU GDB and MSVC CDB debuggers.''
 +
 +
=== Q: My project works everywhere except one computer? ===
 +
 +
'''A:''' Some parts of Code::Blocks or the back-end compiler may not support non-ASCII characters (such as é) or possibly spaces. Try moving the project on the affected computer to a directory that contains neither of these in its path.
 +
 +
=== Q: Syntax highlighting is broken; how do I fix it? ===
 +
 +
'''A:''' Code::Blocks cannot know how to highlight your code unless it knows what lexer to use. This is normally automatically determined by the file extension, so it is important to save the file and name it correctly (<tt>*.c</tt> or <tt>*.cpp</tt> for C and C++ code). It is also possible to activate syntax highlighting on a temporary basis. Open ''Edit->Highlight mode'' and select the language the current file is using.
 +
 +
=== Q: I posted on the forums that Code::Blocks was not working, but no one could help me? ===
 +
 +
'''A:''' There is a distinct lack of crystal balls and divining mirrors here, so you may want to post some information. Using this [[#Q: How do I report a compilation problem on the forums?|template]] in your problem description would be a great help.
 +
 +
=== Q: I cannot find any text in my Code::Blocks logs? ===
 +
 +
'''A:''' On windows, wxWidgets sometimes does not show the content of logs at first; scrolling in the log will bring the text to visibility.

Revision as of 03:07, 9 September 2011

General

Q: What is Code::Blocks?

A: Code::Blocks is an Integrated Development Environment, aka IDE. Thus, a framework for working with source code and using compilers and linkers (in the case of Code::Blocks, these can be several).

Q: What Code::Blocks is not?

A: Code::Blocks is not a compiler, nor a linker. Release packages of Code::Blocks may include a compiler suite (MinGW/GCC), if not provided by the target platform already. However, this is provided "as-is" and not developed/maintained by the Code::Blocks development team.

Q: Is it possible to integrate the win32-help as in dev-cpp, to get help on the items under the caret?

A: Yes, this is implemented, but you'll need the help plugin. So if you are using the installer, make sure you enable this plugin.

Q: What licence is Code::Blocks released under?

A: GNU General Public License 3 (GPL) with an exception for third party plugins that can be of any license (including closed source) as long as they use only the SDK sources of Code::Blocks.

As an example: If you use the Code::Blocks SDK to develop a plugin, this could be even commercial. When you start using/modifying source code of other parts (i.e. the Code::Blocks core or other GPL3 plugins) the modifications or relevant (affected) parts must be provided as source code, too. However, usually (probably 99.9% of the cases) you'll only need to use the SDK.

Compiling

Q: What compiler can I use with Code::Blocks?

A: Code::Blocks philosophy is to be able to use any compiler on earth! Well, almost.

As a matter of fact it largely depends on the used compiler plugin. Some provided with the default Code::Blocks installation are GNU GCC (MinGW/Cygwin), MS Visual C++ Free Toolkit 2003, Borland's C++ Compiler 5.5, DigitalMars Free Compiler., OpenWatcom, Small Device C Compiler (SDCC) and others.

Q: I imported a MSVCToolkit project/workspace, but Code::Blocks insists on trying to use GCC. What's wrong?

A: A little documentation problem ^^;. The "default compiler" is usually GCC, so when you imported it with "the default compiler", you told it to use GCC. To fix this situation, go to "Project", "Build Options" and select VC++ Toolkit as your compiler.

Another possibility is to put the Microsoft compiler as the default one. To do this, choose Settings - Compiler, choose the Microsoft compiler in the Selected Compiler section (top of dialog box) and press the Set as default button.

From now onwards, for all new projects the Microsoft compiler will be taken by default.

Q: My project should be compiled with a custom makefile. Is it possible with Code::Blocks?

A: Yes, you can. You need to change one settings with Code::Blocks 8.02:

a) In your project's Properties, Check "This is a custom makefile".

And that's it! :)

Q: I have downloaded MS VC++ Toolkit 2003 for a compiler. How do I tell Code::Blocks that it is my compiler?

A: Click on "Project/Build options" and select the compiler you want for your project/target.

Q: When compiling a wxWidgets project, I get several "variable 'vtable for xxxx' can't be auto-imported". What's wrong?

A: You need to add WXUSINGDLL in "Project->Build options->Compiler #defines" and rebuild your project (or create a new project and use the "Using wxWidgets DLL" project option which adds "-DWXUSINGDLL" to Project->Build options->Other options). Other errors with the same resolution are: 'unresolved external symbol "char const * const wxEmptyString" (?wxEmptyString@@3PBDB)' or similar. If you were using 1.0-finalbeta and were trying to build a statically linked wxWidgets project, the cause of the problem was some faulty templates. But that's fixed now.

Q: I can't compile a multithreaded app with VC Toolkit! Where are the libraries?

A: Sorry, no fix for your problem...

Your problem doesn't come from CodeBlocks. It exists, because the free VC toolkit (VCTK) doesn't provide all the libraries and tools which come with Visual C++ (VC) which isn't free, unfortunately.

Try buying a full-fledged VC++, or even better, download MinGW

The libraries that can be obtained free of charge are:

Paths:

(VCT3) Visual C++ Toolkit 2003 - C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib
(PSDK) Platform SDK - C:\Program Files\Microsoft Platform SDK\Lib
(NSDK) .NET 1.1 SDK - C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib

C runtime libs:

LIBC.LIB 	Single-threaded, static link                                          (VCT3, NSDK)
LIBCMT.LIB 	Multithreaded, static link                                            (VCT3, NSDK)
MSVCRT.LIB 	Multithreaded, dynamic link (import library for MSVCR71.DLL)          (NSDK)
LIBCD.LIB 	Single-threaded, static link (debug)                                  (VCT3, NSDK)
LIBCMTD.LIB 	Multithreaded, static link (debug)                                    (NSDK)
MSVCRTD.LIB 	Multithreaded, dynamic link (import library for MSVCR71D.DLL) (debug) (NSDK)

C++ libs:

LIBCP.LIB 	Single-threaded, static link                                          (VCT3, PSDK)
LIBCPMT.LIB 	Multithreaded, static link                                            (VCT3)
MSVCPRT.LIB 	Multithreaded, dynamic link (import library for MSVCP71.dll)          (none)
LIBCPD.LIB 	Single-threaded, static link (debug)                                  (VCT3)
LIBCPMTD.LIB 	Multithreaded, static link (debug)                                    (none)
MSVCPRTD.LIB 	Multithreaded, dynamic link (import library for MSVCP71D.DLL) (debug) (none)

Try setting the library linker directories to:

C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib
C:\Program Files\Microsoft Platform SDK\Lib
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib

in that order.

The ones listed as (none) above are actually present in the IA64 and AMD64 subdirectories of the PSDK lib directory. Not sure if these would work on 32-bit windows, however, they may if they are meant to work in 32-bit compatibility mode on the 64-bit processors. Worth a try. Otherwise, you can link statically to the C++ library instead of using MSVCP71.dll. If you really want to link against MSVCP71.dll you can try to create MSVCP71.LIB from the dll using lib.exe and sed. Search google for "exports.sed" for detailed steps.

See also: tclsh script to extract import .lib from (any?) DLL (MinGW)

See also: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_c_run.2d.time_libraries.asp

See also: http://sapdb.2scale.net/moin.cgi/MS_20C_2b_2b_20Toolkit

Q: Microsoft calls MSVCRT.DLL a "Known DLL." How do I know if I can/should use it ?

Microsoft does not clearly describe what 'Known DLL' means. A zLib FAQ entry makes it much more clear. The short answer is that MSVCRT.DLL is a protected system component and to preserve system integrity it cannot be updated by any end user product installers but may be updated from time to time by system updates. If it works use it. If it doesn't you'll need use a non protected library such as MSVCR70 or MSVCR80 which not only can be updated but private versions can be installed. A small and simple C program is likely to work just fine with MSVCRT.DLL. A large and complex C++ program is more likely to need the additional functionality of MSVCR.

The MSVCRT.LIB that ships with 32 bit compiler Visual C++ Toolkit 2003 dynamically links to MSVCR71.DLL which is not present in a freshly installed Windows XP system. MSVCR only appears after some software package that needs it such as Adobe Acrobat Reader is installed. This means that programs that depend on MSVCR must redistribute it or risk not working on a substantial percentage of systems for reasons not obvious to either the affected end users or the program supplier.

For projects that can safely use MSVCRT and where it is impractical to redistribute MSVCR, a Win32 MSVCRT.LIB that links to MSVCRT.DLL is available in any Device Driver Kit. It is best to preserve the MSVCRT.LIB provided by the compiler and alter the name of the MSVCRT.LIB extracted from a DDK. List your newly named MSVCRTxx in the lib. If you use MSVCRT.LIB from the Windows 2003 DDK you may encounter the link error LNK2001: unresolved external symbol ___security_cookie. This can be solved by switching to the MSVCRT.LIB in the Windows XP DDK or by linking bufferoverflowU.lib found in the Windows SDK. A Win64 MSVCRT.LIB that links to MSVCRT.DLL is available in the Windows SDK or Platform PSDK.

To prevent problems it is recommended to include both /MD and /NODEFAULTLIB:MSVCRT switches so that problems come up at link time instead of random crashes at run time. Be sure to load your programs into Dependancy Walker to ensure that functions aren't being linked into both MSVCRxx.DLL and MSVCRT.DLL. It is essential that malloc, calloc, realloc, free, and related memory allocation functions all import from the same DLL.

Source: TCL Wiki

Q: How can I use a DLL without DEF or LIB files ?

A: I tried to find a solution, and the following script solved the problem for me. I used a cygwin environment for tclsh and sed, but the MinGW tools for objdump and dlltool. See here tclsh script to extract import .lib from (any?) DLL (MinGW)

TODO: Someone might add some informations about problems

Request: Is MinGW or Code::Blocks able to support automatic generation of import libraries ?

See also: http://www.mingw.org/mingwfaq.shtml#faq-msvcdll

See also: http://wyw.dcweb.cn/stdcall.htm

Q: Where are the libraries for the OpenGL, Ogre3D, SDL, QT, wxWidgets etc. projects?

A: They're not bundled. The templates were provided for your convenience, but you need to download the libraries on your own. In common terms, "batteries not included" :)

Q: Is it possible to use Visual C++ 6.0 with Code::Blocks?

A: Yes. See Integrating Microsoft Visual C 6 with Code::Blocks IDE for a detailed description on using VC++ 6.0 with Code::Blocks.

Q: I get this error when compiling: Symbol "isascii" was not found in "codeblocks.dll"

A: Make sure you didn't mix up the MSVC headers or libs with the MinGW ones.

Q: I would like to compile a project using some non-standard libraries. How can I indicate to CodeBlocks that these libraries and include files exist?

A: You can specify them for your global environment or just for your project.

For global environment :
- Menu Settings/Compiler and debugger
- In the Global compiler settings, select the directories tab
- Add the required paths for compiler and linker.

For your project :
- Right click on the project then select Build options
- Select the directories tab
- Add the required paths for compiler and linker.
- Add your specific libraries in the linker tab.
- Pay attention to project settings and target settings.

Q: How do I use both Debug and Release builds of wx libraries?

A: I would use the default method of doing it and the default folder naming.

Using these C::B custom varibles

WX_SUFFIX=""  // ANSI Release
WX_SUFFIX="d"  // ANSI Debug
WX_SUFFIX="u"  // Unicode Release
WX_SUFFIX="ud"  // Unicode debug

I use WX_CFG when I am using a special configuration WX_CFG="rc3"

Remember, the CodeBlocks globel variable WX needs to point to the wxWidgets folder.

Example minGW build command for "Unicode debug" 2.8.0 RC3

mingw32-make -f makefile.gcc VENDOR=rc3 CFG=rc3 USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=debug   UNICODE=1

"VENDOR=" just puts rc3 in the DLL name; "CFG=" sets which folder the DLL is placed in. In this case in lib\gcc_dllrc3

Before using CFG in the mingw32-make build you need to do one prior wxWidget build without using it; else the build errors out. (See note below.)

"__WXDEBUG__" must be defined (in the codeblocks project setting) if you wish to link against the debug version of wxWidgets DLL. Else you will get a runtime error, when you try to run your project output.

Contributed by Tim S

Note:

  • I have never gotten the following command to work
 mingw32-make -f makefile.gcc VENDOR=rc3 CFG=rc3 USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=debug   UNICODE=1
  • unless I have first run this command on the same wxWidgets folders
 mingw32-make -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=debug   UNICODE=1
  • I am guessing that the build without the CFG creates a file or directory needed by the build with the CFG.

Q: How do I troubleshoot an compiler problem?

A: I would start by turning on full Compiler logging.

This is done by selecting the "Full command line" option Under menu "Settings" -> "Compiler and Debugger" -> Global compiler settings -> [the compiler you use] -> "Other Setting" tab, "Compiler logging".

This option will make Code::Blocks output the exact commands it uses to compile your code.

Things to remember:

  • You should review all the commands and their options;
  • If you don't know what an option or a command does please read the documentation for the compiler/linker you're using;
  • Look for missing commands;
  • For every source file (.cpp; .c; .d; etc) in your project, you must have at least one command in the log. This command must produce an object file (file extension ".o" if using gcc/g++ and ".obj" if using Visual Studio);
  • Every object file should be linked in the final executable, if not there are undefined symbols errors;
  • Remember the file extension matters: *.c is compiled as C file, *.cpp is compiled as C++ file. Read more

Q: How do I add version information to windows executables and dll's?

A: You need to create a reosurce file with the extension .rc and write the version info there. Then add that file to the Code::Blocks project you are working on.

Sample content of a resource file that you can use and modify for your needs:

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

VS_VERSION_INFO    VERSIONINFO
  FILEVERSION      1,0,0,1
  PRODUCTVERSION   1,0,0,1
  FILEFLAGSMASK    0x3fL // VS_FFI_FILEFLAGSMASK
#ifdef _DEBUG
  FILEFLAGS        0x1L  // VS_FF_DEBUG|VS_FF_PRIVATEBUILD|VS_FF_PRERELEASE
#else
  FILEFLAGS        0x0L  // final version
#endif
  FILEOS           VOS_NT_WINDOWS32
  FILETYPE         VFT_APP
  FILESUBTYPE      VFT2_UNKNOWN // not used
{
  BLOCK "StringFileInfo"
  {
    BLOCK "040904E4" // Lang=US English, CharSet=Windows Multilingual
    {
      VALUE "Build",            "August 2007\0"
      VALUE "Comments",         "Free for personal use only.\0"
      VALUE "CompanyName",      "Fake Company\0"
      VALUE "Developer",        "The Developer\0"
      VALUE "FileDescription",  "Application implementing something\0"
      VALUE "FileVersion",      "1.0.000\0"
      VALUE "InternalName",     "AppInternalName\0"
      VALUE "LegalCopyright",   "Copyright (C) 2007 Fake Company\0"
      VALUE "LegalTrademarks",  "All rights reserved.\0"
      VALUE "OriginalFilename", "TheEXE.exe\0"
      VALUE "PrivateBuild",     "\0"
      VALUE "ProductName",      "The EXE\0"
      VALUE "ProductVersion",   "1.0.000\0"
      VALUE "SpecialBuild",     "\0"
      VALUE "Support",          "TheEXE at fake-domain.com\0"
      VALUE "Users",            "Unlimited.\0"
    } // BLOCK "040904E4"
  } // BLOCK "StringFileInfo"
  BLOCK "VarFileInfo"
  {
    VALUE "Translation", 0x409, 1252 // 1252 = 0x04E4
  } // BLOCK "VarFileInfo"
}

Also you can use the the Auto Versioning plugin to assist you on the generation of version information. For documentation of the syntax and values used on windows resource files, you can visit the following websites:

Q: Code::Blocks does not force relink if the library is changed?

A: Open Project->Properties...->Build targets (tab) and select the executable. Click Dependencies... and add the name of the library (including its relative path) to External dependency files. Also see inter-project dependencies.

Example: output\myLibrary\libdostuff.a

Q: How do I report a compilation problem on the forums?

A: Try building the project from command line. If the same error comes up, it is a problem with either the source file, the compiler, or the compiler setup. If this is the case, you are unlikely to receive support for it on the Code::Blocks forums, however, How do I troubleshoot an compiler problem? may help.

If it works fine building from command line, it is either a problem with your project, Code::Blocks' setup, or possibly an actual bug. When posting this problem, include the name of your compiler, operating system, Code::Blocks version, compiler log (go to Settings->Compiler and debugger...->Build options (tab) and check Save build log and Always output the full command line), and, if it caused Code::Blocks to crash, the codeblocks.RPT file (located in the Code::Blocks installation directory).

Template: Paste the following template into your post, editing the relevant sections.

OS = MyOperatingSystem
CB Version = Code::BlocksVersionNumber
Compiler = CompilerName CompilerVersionNumber

Description of relevant events.

Build log:
[code]
Paste build log here
[/code]

Crash report:
[code]
If Code::Blocks crashed, paste the contents of codeblocks.RPT here.
[/code]

Q: All of the Build related options are grayed out?

A: Code::Blocks checks the file extension for individual files before allowing them to be compiled. Save your file with the correct file extension (*.c or *.cpp).

More often it is useful to create a project so that Code::Blocks can manage the entire build.

Q: My build fails with multiple undefined reference errors?

Example:

undefined reference to `WSACleanup@8
undefined reference to `WSACleanup@0

A: Most of the time it is because the required library is not linked with your project. Go to Project->Build options...->Linker settings (tab) and add the required library or libraries.

If the error includes a line number, it is likely that this is a problem with your code. Track down down your function declarations and implementations. Ensure they all match up, are spelled correctly, and have the correct scope resolution.

Settings

Q: How do I get Code Completion to work?

A: Did you check how code completion is configured ? See "Settings/Editor", click on "Code-completion and symbols browser" in the left column and check the Code completion and C/C++ parser tabs.

From the 2006/11/30 nightly build, you can also add, in the project properties, directories to be searched when locating a file to parse .Right click on the project, click on Properties and select the C/C++ parser options.

They're mostly useful when you don't add compiler search dirs in build options but use backticked expressions (e.g. `freetype-config --cflags`). In this case, the parser is not aware of where the source files are located. So, by manually adding the directory in the parser's search dirs you're actually helping the parser find the files.

Of course, backticked expressions are not the only reason these parser search dirs are useful. As another example, I have a set of projects in a workspace. To minimize maintenance overhead, I'm using build scripts to configure these projects. Now, although build scripts are an awesome feature, the C/C++ parser faces the same problem: it doesn't know where to search for files. The parser search directories come to the rescue again.

Q: How do I make Code::Blocks portable?

Just the main configuration

  • run / configure C::B as usual

Note: Code::Blocks will create a default.conf file that usually is placed into: "C:\Documents and Settings\[your_user_name]\Application Data\codeblocks" (or %APPDATA%) on Windows or your usual home folder ("~/") under Linux.

  • place this default.conf file into the directory where the codeblocks binary is
  • remove the default.conf file from %APPDATA% / home folder respectively
  • just run C::B from within the C::B path and/or via script / link...

Note: Don't forget to remove all bad hacks you might have done previously that modify %USERPROFILE% and/or %APPDATA% on Windows.

Note: If C::B does not find default.conf (its config) within the %APPDATA% / home folder it looks within the C::B directory (the one where the C::B executable is) next. If there is no config file, too it will be created in the %APPDATA% / home folder. So just make sure you are doing the right thing and C::B is portable just fine.

BTW: This does probably not apply for any other config file(s) where not C::B is the maintainer but e.g. plugins. The main config file just works like that.


Complete mobile with compiler and plugins

An alternative way to make Code::Blocks completely portable can be achieved by following these steps:

  • Set up a SVN compiled version (Linux)/a nightly (Windows) in the portable directory of your choice
  • WINDOWS ONLY: Move your compiler (likely Mingw) into the directory where the nightly Code::Blocks you just set up resides so that you get codeblocks\mingw
  • Linux systems will have a compiler anyway so that step is not necessary for Linux
  • Next you will need a script to change your home data variable and launch Code::Blocks
  • Create a new file in your new Code::Blocks directory (launcher.sh for Linux, launcher.bat for Windows) and open it with an editor
  • Paste the following script in there and save it:

LINUX SCRIPT

#!/bin/bash
HOME="`pwd`/settings"
mkdir -p "$HOME"
./codeblocks $*

WINDOWS SCRIPT

set APPDATA=%~dp0settings
mkdir %APPDATA%
START /D"%~dp0" codeblocks.exe %*  
  • LINUX ONLY: Make the file you just created executable: chmod +x laucnher.sh
  • You can now launch this by either typing ./launcher.sh (Linux) or by doubleclicking it in Windows


A portable Code::Blocks Launcher for Windows [/index.php?action=profile;u=2439 Biplab], an active developer of CB, has released the portable CB loader v0.1.1 in his Blog, and later, [/index.php?action=profile;u=4689 codeur] has made many improvements, and Now, CBlauncher is a part of C::B source code, its code was adopted in the C::B's SVN repository, see [/index.php/topic,10360.msg98052.html#msg98052 Re: Portable Code::Blocks] for more details.

A binary version of CBLauncher can be downloaded from http://cblauncher.codecutter.org/CbLauncher_1.0.1.zip. The CbLauncher 1.0.1 source code package can be download from http://CbLauncher.codecutter.org/CbLauncher_1.0.1_src.zip, then to build it and run Code::Blocks portable. Or you can check out the C::B's SVN repository, it was located under: http://svn.berlios.de/svnroot/repos/codeblocks/trunk/src/tools/CBLauncher Then, you can build it by opening the project file http://svn.berlios.de/svnroot/repos/codeblocks/trunk/src/tools/CBLauncher/CbLauncher.cbp Steps to use Cblauncher:

  1. Download a nightly build with revision > 5334.
  2. Extract them to a folder.
  3. Extract CbLauncher.exe to same folder where codeblocks.exe file is present. After extraction, CbLauncher.exe and codeblocks.exe should be in same folder.
  4. Now double click on on CbLauncher.exe file to run Code::Blocks in a portable manner.

Also, see [/index.php/topic,10360.0.html Portable Code::Blocks] for more details.

Q: Code::Blocks option xyz is missing?

A: Many features of Code::Blocks are implemented by means of plugins. First open Plugins->Manage plugins... and ensure that the one you are trying to use is not disabled. If plugin xyz is not in the list, it is possible that you removed/disabled it on installation. To acquire the plugin, reinstall Code::Blocks or rebuild from source (double checking that the desired plugin is included).

Issues and Workaround

Q: Sometime, in the text editor, space bar triggers Code Completion, how do I fix that?

A: Informations found on the forum.

It's possible to fix this issue editing the keyboard entry in /etc/X1/xorg.conf file. However, some recent distribs use HAL, therefore xorg.conf is empty (since Ubuntu 8.10 for instance). It's also possible to use a setxkbmap tool.

Hal Solution (Ubuntu 8.10 and above):

For Ubuntu (and other gnome desktops), another simple solution for the current user is to change a preference.

  1. Menu System => Preferences => Keyboard
  2. Select Tab Layout
  3. Edit "Layout Options..."
  4. Expand last option "Using space key to input non-breakable space character"
  5. Select the last choice "Usual Space at any level"

This is not system wide.

A system wide solution would be to add an fdi file there (for instance)

/etc/hal/fdi/policy/99-x11-key_space_fix.fdi

put the right thing in it (I did not succeed), unplug your keyboard, plug it again.

Xorg Solution (prior Hal based distrib):

as root, edit /etc/X11/xorg.conf and find something like :

Section "InputDevice"
       Identifier      "Generic Keyboard"
       Driver          "kbd"
       ...
       Option          "XkbVariant"    "oss"
EndSection

Try one of the following workarounds :

1/ you comment the line

        Option          "XkbVariant"    "oss"

like this

#        Option          "XkbVariant"    "oss"

2/ you replace

"XkbVariant"  "oss"

with

"XkbVariant"  "latin9"   

This works for Ubuntu prior 8.10 (before hal)

It seems that KUbuntu requires the following line:

   Option     "XkbOptions"  "nbsp:none"



setxkbmap Solution:

run this command before running Code:Blocks (works fines for KUbuntu)

setxkbmap  -option nbsp:none

if it's not enough you can try :

setxkbmap  -option nbsp:none -model pc 105 -layout fr -variant latin 9

Q: IDE is drawing the text from Right to Left?

A: Uncheck "Settings -> Environment -> View -> Internationalization" and restart Code::Blocks

Q: All the options in the debug menu are grayed out?

A: Code::Blocks can only use integrated debugging on an active project. Start a new project and add the file to it. Also see debugging with Code::Blocks.

Note: Code:Blocks only supports the GNU GDB and MSVC CDB debuggers.

Q: My project works everywhere except one computer?

A: Some parts of Code::Blocks or the back-end compiler may not support non-ASCII characters (such as é) or possibly spaces. Try moving the project on the affected computer to a directory that contains neither of these in its path.

Q: Syntax highlighting is broken; how do I fix it?

A: Code::Blocks cannot know how to highlight your code unless it knows what lexer to use. This is normally automatically determined by the file extension, so it is important to save the file and name it correctly (*.c or *.cpp for C and C++ code). It is also possible to activate syntax highlighting on a temporary basis. Open Edit->Highlight mode and select the language the current file is using.

Q: I posted on the forums that Code::Blocks was not working, but no one could help me?

A: There is a distinct lack of crystal balls and divining mirrors here, so you may want to post some information. Using this template in your problem description would be a great help.

Q: I cannot find any text in my Code::Blocks logs?

A: On windows, wxWidgets sometimes does not show the content of logs at first; scrolling in the log will bring the text to visibility.