<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.codeblocks.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Justin+Brimm</id>
	<title>Code::Blocks - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.codeblocks.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Justin+Brimm"/>
	<link rel="alternate" type="text/html" href="https://wiki.codeblocks.org/index.php/Special:Contributions/Justin_Brimm"/>
	<updated>2026-05-04T16:06:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://wiki.codeblocks.org/index.php?title=Installing_Objective-C_Compiler&amp;diff=6588</id>
		<title>Installing Objective-C Compiler</title>
		<link rel="alternate" type="text/html" href="https://wiki.codeblocks.org/index.php?title=Installing_Objective-C_Compiler&amp;diff=6588"/>
		<updated>2011-04-10T02:26:02Z</updated>

		<summary type="html">&lt;p&gt;Justin Brimm: Very minor page formatting (removed extraneous white-space).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:User Documentation]]&lt;br /&gt;
== Setup the Compiler ==&lt;br /&gt;
&lt;br /&gt;
Objective-C is a strict superset of C; the additional functionality is obtained by linking to the Objective-C library when building using the standard &amp;lt;b&amp;gt;GNU GCC Compiler&amp;lt;/b&amp;gt;. This makes setting up a new compiler very simple, as we can make a copy of the standard compiler and change the linker settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Caution:&amp;lt;/b&amp;gt; Make sure your GNU GCC Compiler is properly setup before attempting to setup for Objective-C&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Go to &amp;lt;i&amp;gt;Settings-&amp;gt;Compiler and debugger...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Select &amp;lt;b&amp;gt;GNU GCC Compiler&amp;lt;/b&amp;gt; and make a copy it; name it whatever you like, but &amp;quot;&amp;lt;b&amp;gt;GNU GCC Obj-C Compiler&amp;lt;/b&amp;gt;&amp;quot; would be the most descriptive.&lt;br /&gt;
&lt;br /&gt;
3) Under &amp;lt;i&amp;gt;Linker Settings&amp;lt;/i&amp;gt;, add &amp;lt;b&amp;gt;-lobjc&amp;lt;/b&amp;gt; to &amp;lt;i&amp;gt;Other linker options&amp;lt;/i&amp;gt;; you &amp;lt;u&amp;gt;don't&amp;lt;/u&amp;gt; need to explicitly add the libobjc.a library, as the flag tells gcc to include it for us.&lt;br /&gt;
&lt;br /&gt;
== Adding Filetype Support ==&lt;br /&gt;
&lt;br /&gt;
1) Go to &amp;lt;i&amp;gt;Settings-&amp;gt;Environment...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Select &amp;lt;b&amp;gt;Files extension handling&amp;lt;/b&amp;gt; and add &amp;lt;b&amp;gt;*.m&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Go to &amp;lt;i&amp;gt;Project-&amp;gt;Project tree-&amp;gt;Edit file types &amp;amp; categories...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Under &amp;lt;b&amp;gt;Sources&amp;lt;/b&amp;gt;, add &amp;lt;b&amp;gt;*.m&amp;lt;/b&amp;gt; to the list of filetypes.&lt;br /&gt;
&lt;br /&gt;
== Proper Syntax Highlighting ==&lt;br /&gt;
&lt;br /&gt;
1) Go to &amp;lt;i&amp;gt;Settings-&amp;gt;Editor...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Select &amp;lt;b&amp;gt;Syntax highlighting&amp;lt;/b&amp;gt; and go to &amp;lt;b&amp;gt;Filemasks...&amp;lt;/b&amp;gt;. Add &amp;lt;b&amp;gt;*.m&amp;lt;/b&amp;gt; to the list of filetypes.&lt;br /&gt;
&lt;br /&gt;
3) Go to &amp;lt;b&amp;gt;Keywords...&amp;lt;/b&amp;gt; (next to &amp;lt;b&amp;gt;Filemasks...&amp;lt;/b&amp;gt;) and create a new set (up arrow). Add this to the &amp;lt;b&amp;gt;Keywords:&amp;lt;/b&amp;gt; box:&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
 @interface @implementation @end @class @selector @protocol @public @protected @private id BOOL YES NO SEL nil NULL self&lt;br /&gt;
&lt;br /&gt;
== Optional Changes ==&lt;br /&gt;
&lt;br /&gt;
1) Go to &amp;lt;i&amp;gt;Settings-&amp;gt;Compiler and dubugger...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Under &amp;lt;i&amp;gt;Other Settings&amp;lt;/i&amp;gt;, change &amp;lt;i&amp;gt;Compiler logging&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;Full command line&amp;lt;/b&amp;gt;. If ObjC still refuses to build properly for you, you can use this to compare the command line arguments C::B uses against the commands you would use if you were building the program manually on the command line.&lt;br /&gt;
&lt;br /&gt;
3) Under &amp;lt;i&amp;gt;Other Settings&amp;lt;/i&amp;gt;, go to &amp;lt;i&amp;gt;Advanced Options&amp;lt;/i&amp;gt;. For &amp;lt;b&amp;gt;Link object files to executable&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Link object files to console executable&amp;lt;/b&amp;gt;, move &amp;lt;b&amp;gt;-o $exe_output&amp;lt;/b&amp;gt; to the end of the macros. For reasons beyond my understanding, GCC will sometimes (albeit rarely) complain during complex builds if this isn't the last argument on the line.&lt;br /&gt;
&lt;br /&gt;
== Important Notes ==&lt;br /&gt;
&lt;br /&gt;
1) By default, C::B will select &amp;lt;b&amp;gt;CPP&amp;lt;/b&amp;gt; as the default compiler variable for a new source file, and the file will not be compiled or linked to a target. Whenever you add or create a new ObjC source (&amp;lt;b&amp;gt;*.m&amp;lt;/b&amp;gt;) in your project, you must right-click on it and go to &amp;lt;i&amp;gt;Properties...&amp;lt;/i&amp;gt;. Under &amp;lt;b&amp;gt;advanced&amp;lt;/b&amp;gt;, change the &amp;lt;b&amp;gt;compiler variable&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;CC&amp;lt;/b&amp;gt;. Under &amp;lt;b&amp;gt;Build&amp;lt;/b&amp;gt;, select both &amp;lt;b&amp;gt;Compile file&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Link file&amp;lt;/b&amp;gt;. Before you close the dialog, go to &amp;lt;b&amp;gt;General&amp;lt;/b&amp;gt; and uncheck &amp;lt;b&amp;gt;File is read-only&amp;lt;/b&amp;gt;. This will automatically get selected when you change the other options and if you close the dialog before you uncheck it, you'll have to go back and change it, then close and reopen the file in the viewer before you can edit it.&lt;br /&gt;
&lt;br /&gt;
2) When you add a header file (&amp;lt;b&amp;gt;*.h&amp;lt;/b&amp;gt;), you'll also need to open up its properties window and change the compiler variable to &amp;lt;b&amp;gt;CC&amp;lt;/b&amp;gt;. You don't need to do anything else to it.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
There's a small handful of pitfalls you can fall into when attempting to compile Objective-C applications using TDM-GCC or MinGW, and these pitfalls are unfortunately not well documented. This section tries to identify and solve the currently identified issues; note that these are issues as of the current GCC 4.5.x branch, unless otherwise noted. There is currently no 4.6.x port of GCC for TDM-GCC/MinGW available; the GCC 4.6.x branch introduces an entirely new Objective-C library that brings the ObjC implementation inline with Apple's own implementation of the library. Many of these issues are likely solved in this newest release.&lt;br /&gt;
&lt;br /&gt;
=== Shared Library Trouble ===&lt;br /&gt;
&lt;br /&gt;
There has been some trouble with the &amp;lt;b&amp;gt;-lobjc&amp;lt;/b&amp;gt; flag trying to link to &amp;lt;i&amp;gt;libobjc.dll.a&amp;lt;/i&amp;gt;, which has been a nonfunctional shared library for some time. If this shared library is not removed before compilation, gcc will throw &amp;lt;i&amp;gt;undefined reference to ...&amp;lt;/i&amp;gt; errors at every ObjC method or library call during the linking stage. This shared library must be removed, and in the case of TDM-GCC, is located at: &amp;lt;i&amp;gt;[mingw install directory]/lib/gcc/[tdm install type]/[version]/libobjc.dll.a&amp;lt;/i&amp;gt;. If you've installed TDM-GCC x64, you must also remove the 32-bit copy of the shared library, located at: &amp;lt;i&amp;gt;...[version]/32/libobjc.dll.a&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== BOOL Redefined ===&lt;br /&gt;
&lt;br /&gt;
I haven't experienced this error as of TDM-GCC 4.5.2, but on TDM-GCC 4.5.1 and earlier, attempts to build a 32-bit ObjC application that also imports &amp;amp;lt;&amp;lt;i&amp;gt;windows.h&amp;lt;/i&amp;gt;&amp;amp;gt; would produce a &amp;lt;i&amp;gt;BOOL redefined&amp;lt;/i&amp;gt; error. This is the result of the windows headers defining their own version of BOOL; the headers do make checks to see if ObjC is being used (by checking if &amp;lt;i&amp;gt;__OBJC__&amp;lt;/i&amp;gt; is defined) and change various types and declarations to make themselves compatible, but the ObjC library doesn't define &amp;lt;i&amp;gt;__OBJC__&amp;lt;/i&amp;gt; because it also changes its declarations if this is already defined. You can't simply define &amp;lt;i&amp;gt;__OBJC__&amp;lt;/i&amp;gt; at the beginning of a program however, as it will cause a failure to build with &amp;lt;b&amp;gt;libobjc.a&amp;lt;/b&amp;gt;. The proper way to patch in compatibility is to modify the end of &amp;lt;b&amp;gt;objc.h&amp;lt;/b&amp;gt; (located at: &amp;lt;i&amp;gt;.../[version]/include/objc/objc.h&amp;lt;/i&amp;gt;), and import it in your program before you import the windows headers.&lt;br /&gt;
&lt;br /&gt;
==== Patch to objc.h ====&lt;br /&gt;
 157	IMP objc_msg_lookup(id receiver, SEL op);&lt;br /&gt;
 158&lt;br /&gt;
  158	#define __OBJC__	/* Insert Patch Here */&lt;br /&gt;
 159	#ifdef __cplusplus&lt;br /&gt;
 160	}&lt;br /&gt;
 161	#endif&lt;br /&gt;
 162&lt;br /&gt;
 163	#endif /* not __objc_INCLUDE_GNU */&lt;br /&gt;
&lt;br /&gt;
== Test Build ==&lt;br /&gt;
&lt;br /&gt;
Here's a bare-bones project you can throw together to test if your C::B settings will compile ObjC correctly. You can't actually test with just strict C, since any problems with the Objective-C compiler will only manifest when using ObjC functionality.&lt;br /&gt;
&lt;br /&gt;
=== main.m ===&lt;br /&gt;
 #import &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #import &amp;quot;TestObject.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char** argv)&lt;br /&gt;
 {&lt;br /&gt;
 	TestObject *aTestObject = [[TestObject alloc] init];&lt;br /&gt;
 	printf(&amp;quot;Initial Value: %d\n&amp;quot;, [aTestObject value]);&lt;br /&gt;
 	printf(&amp;quot;+45 Value: %d\n&amp;quot;, [aTestObject add: 45]);&lt;br /&gt;
 	printf(&amp;quot;-63 Value: %d\n&amp;quot;, [aTestObject subtract: 63]);&lt;br /&gt;
 &lt;br /&gt;
 	[aTestObject add: 103];&lt;br /&gt;
 	printf(&amp;quot;+103 Value: %d\n&amp;quot;, [aTestObject value]);&lt;br /&gt;
 &lt;br /&gt;
 	return (EXIT_SUCCESS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== TestObject.h ===&lt;br /&gt;
 #import &amp;lt;objc/Object.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 @interface TestObject : Object&lt;br /&gt;
 {&lt;br /&gt;
 	int internalInt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 - (int)add:(int)anInt;&lt;br /&gt;
 - (int)subtract:(int)anInt;&lt;br /&gt;
 - (int)value;&lt;br /&gt;
 &lt;br /&gt;
 @end&lt;br /&gt;
&lt;br /&gt;
=== TestObject.m ===&lt;br /&gt;
 #import &amp;quot;TestObject.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 @implementation TestObject&lt;br /&gt;
 &lt;br /&gt;
 - (id)init&lt;br /&gt;
 {&lt;br /&gt;
 	if ((self = [super init]))&lt;br /&gt;
 	{&lt;br /&gt;
 		internalInt = 0;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	return self;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 - (int)add:(int)anInt&lt;br /&gt;
 {&lt;br /&gt;
 	internalInt += anInt;&lt;br /&gt;
 	return internalInt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 - (int)subtract:(int)anInt&lt;br /&gt;
 {&lt;br /&gt;
 	internalInt -= anInt;&lt;br /&gt;
 	return internalInt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 - (int)value&lt;br /&gt;
 {&lt;br /&gt;
 	return internalInt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 @end&lt;br /&gt;
&lt;br /&gt;
== Objective-C Library Licensing ==&lt;br /&gt;
&lt;br /&gt;
Unlike other libraries included with GCC, the Objective-C library may be statically linked into a project without extending the GNU GPL to that project. Although the library is covered under the GNU GPL itself, it has a special exemption in its license because it is a necessary library to compile a language.&lt;br /&gt;
&lt;br /&gt;
=== License Exemption ===&lt;br /&gt;
&lt;br /&gt;
 /* As a special exception, if you link this library with files compiled with&lt;br /&gt;
 GCC to produce an executable, this does not cause the resulting executable&lt;br /&gt;
 to be covered by the GNU General Public License. This exception does not&lt;br /&gt;
 however invalidate any other reasons why the executable file might be&lt;br /&gt;
 covered by the GNU General Public License */&lt;/div&gt;</summary>
		<author><name>Justin Brimm</name></author>
	</entry>
	<entry>
		<id>https://wiki.codeblocks.org/index.php?title=Installing_Objective-C_Compiler&amp;diff=6587</id>
		<title>Installing Objective-C Compiler</title>
		<link rel="alternate" type="text/html" href="https://wiki.codeblocks.org/index.php?title=Installing_Objective-C_Compiler&amp;diff=6587"/>
		<updated>2011-04-10T02:23:11Z</updated>

		<summary type="html">&lt;p&gt;Justin Brimm: Added &amp;quot;Troubleshooting&amp;quot; section and a couple of known pitfalls. Moved reference to one of these problems from &amp;quot;Setup the Compiler&amp;quot; to the new troubleshooting section. Also updated &amp;quot;keywords&amp;quot;.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:User Documentation]]&lt;br /&gt;
&lt;br /&gt;
== Setup the Compiler ==&lt;br /&gt;
&lt;br /&gt;
Objective-C is a strict superset of C; the additional functionality is obtained by linking to the Objective-C library when building using the standard &amp;lt;b&amp;gt;GNU GCC Compiler&amp;lt;/b&amp;gt;. This makes setting up a new compiler very simple, as we can make a copy of the standard compiler and change the linker settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Caution:&amp;lt;/b&amp;gt; Make sure your GNU GCC Compiler is properly setup before attempting to setup for Objective-C&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Go to &amp;lt;i&amp;gt;Settings-&amp;gt;Compiler and debugger...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Select &amp;lt;b&amp;gt;GNU GCC Compiler&amp;lt;/b&amp;gt; and make a copy it; name it whatever you like, but &amp;quot;&amp;lt;b&amp;gt;GNU GCC Obj-C Compiler&amp;lt;/b&amp;gt;&amp;quot; would be the most descriptive.&lt;br /&gt;
&lt;br /&gt;
3) Under &amp;lt;i&amp;gt;Linker Settings&amp;lt;/i&amp;gt;, add &amp;lt;b&amp;gt;-lobjc&amp;lt;/b&amp;gt; to &amp;lt;i&amp;gt;Other linker options&amp;lt;/i&amp;gt;; you &amp;lt;u&amp;gt;don't&amp;lt;/u&amp;gt; need to explicitly add the libobjc.a library, as the flag tells gcc to include it for us.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding Filetype Support ==&lt;br /&gt;
&lt;br /&gt;
1) Go to &amp;lt;i&amp;gt;Settings-&amp;gt;Environment...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Select &amp;lt;b&amp;gt;Files extension handling&amp;lt;/b&amp;gt; and add &amp;lt;b&amp;gt;*.m&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Go to &amp;lt;i&amp;gt;Project-&amp;gt;Project tree-&amp;gt;Edit file types &amp;amp; categories...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Under &amp;lt;b&amp;gt;Sources&amp;lt;/b&amp;gt;, add &amp;lt;b&amp;gt;*.m&amp;lt;/b&amp;gt; to the list of filetypes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proper Syntax Highlighting ==&lt;br /&gt;
&lt;br /&gt;
1) Go to &amp;lt;i&amp;gt;Settings-&amp;gt;Editor...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Select &amp;lt;b&amp;gt;Syntax highlighting&amp;lt;/b&amp;gt; and go to &amp;lt;b&amp;gt;Filemasks...&amp;lt;/b&amp;gt;. Add &amp;lt;b&amp;gt;*.m&amp;lt;/b&amp;gt; to the list of filetypes.&lt;br /&gt;
&lt;br /&gt;
3) Go to &amp;lt;b&amp;gt;Keywords...&amp;lt;/b&amp;gt; (next to &amp;lt;b&amp;gt;Filemasks...&amp;lt;/b&amp;gt;) and create a new set (up arrow). Add this to the &amp;lt;b&amp;gt;Keywords:&amp;lt;/b&amp;gt; box:&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
 @interface @implementation @end @class @selector @protocol @public @protected @private id BOOL YES NO SEL nil NULL self&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optional Changes ==&lt;br /&gt;
&lt;br /&gt;
1) Go to &amp;lt;i&amp;gt;Settings-&amp;gt;Compiler and dubugger...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Under &amp;lt;i&amp;gt;Other Settings&amp;lt;/i&amp;gt;, change &amp;lt;i&amp;gt;Compiler logging&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;Full command line&amp;lt;/b&amp;gt;. If ObjC still refuses to build properly for you, you can use this to compare the command line arguments C::B uses against the commands you would use if you were building the program manually on the command line.&lt;br /&gt;
&lt;br /&gt;
3) Under &amp;lt;i&amp;gt;Other Settings&amp;lt;/i&amp;gt;, go to &amp;lt;i&amp;gt;Advanced Options&amp;lt;/i&amp;gt;. For &amp;lt;b&amp;gt;Link object files to executable&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Link object files to console executable&amp;lt;/b&amp;gt;, move &amp;lt;b&amp;gt;-o $exe_output&amp;lt;/b&amp;gt; to the end of the macros. For reasons beyond my understanding, GCC will sometimes (albeit rarely) complain during complex builds if this isn't the last argument on the line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Important Notes ==&lt;br /&gt;
&lt;br /&gt;
1) By default, C::B will select &amp;lt;b&amp;gt;CPP&amp;lt;/b&amp;gt; as the default compiler variable for a new source file, and the file will not be compiled or linked to a target. Whenever you add or create a new ObjC source (&amp;lt;b&amp;gt;*.m&amp;lt;/b&amp;gt;) in your project, you must right-click on it and go to &amp;lt;i&amp;gt;Properties...&amp;lt;/i&amp;gt;. Under &amp;lt;b&amp;gt;advanced&amp;lt;/b&amp;gt;, change the &amp;lt;b&amp;gt;compiler variable&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;CC&amp;lt;/b&amp;gt;. Under &amp;lt;b&amp;gt;Build&amp;lt;/b&amp;gt;, select both &amp;lt;b&amp;gt;Compile file&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Link file&amp;lt;/b&amp;gt;. Before you close the dialog, go to &amp;lt;b&amp;gt;General&amp;lt;/b&amp;gt; and uncheck &amp;lt;b&amp;gt;File is read-only&amp;lt;/b&amp;gt;. This will automatically get selected when you change the other options and if you close the dialog before you uncheck it, you'll have to go back and change it, then close and reopen the file in the viewer before you can edit it.&lt;br /&gt;
&lt;br /&gt;
2) When you add a header file (&amp;lt;b&amp;gt;*.h&amp;lt;/b&amp;gt;), you'll also need to open up its properties window and change the compiler variable to &amp;lt;b&amp;gt;CC&amp;lt;/b&amp;gt;. You don't need to do anything else to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
There's a small handful of pitfalls you can fall into when attempting to compile Objective-C applications using TDM-GCC or MinGW, and these pitfalls are unfortunately not well documented. This section tries to identify and solve the currently identified issues; note that these are issues as of the current GCC 4.5.x branch, unless otherwise noted. There is currently no 4.6.x port of GCC for TDM-GCC/MinGW available; the GCC 4.6.x branch introduces an entirely new Objective-C library that brings the ObjC implementation inline with Apple's own implementation of the library. Many of these issues are likely solved in this newest release.&lt;br /&gt;
&lt;br /&gt;
=== Shared Library Trouble ===&lt;br /&gt;
&lt;br /&gt;
There has been some trouble with the &amp;lt;b&amp;gt;-lobjc&amp;lt;/b&amp;gt; flag trying to link to &amp;lt;i&amp;gt;libobjc.dll.a&amp;lt;/i&amp;gt;, which has been a nonfunctional shared library for some time. If this shared library is not removed before compilation, gcc will throw &amp;lt;i&amp;gt;undefined reference to ...&amp;lt;/i&amp;gt; errors at every ObjC method or library call during the linking stage. This shared library must be removed, and in the case of TDM-GCC, is located at: &amp;lt;i&amp;gt;[mingw install directory]/lib/gcc/[tdm install type]/[version]/libobjc.dll.a&amp;lt;/i&amp;gt;. If you've installed TDM-GCC x64, you must also remove the 32-bit copy of the shared library, located at: &amp;lt;i&amp;gt;...[version]/32/libobjc.dll.a&amp;lt;/i&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== BOOL Redefined ===&lt;br /&gt;
&lt;br /&gt;
I haven't experienced this error as of TDM-GCC 4.5.2, but on TDM-GCC 4.5.1 and earlier, attempts to build a 32-bit ObjC application that also imports &amp;amp;lt;&amp;lt;i&amp;gt;windows.h&amp;lt;/i&amp;gt;&amp;amp;gt; would produce a &amp;lt;i&amp;gt;BOOL redefined&amp;lt;/i&amp;gt; error. This is the result of the windows headers defining their own version of BOOL; the headers do make checks to see if ObjC is being used (by checking if &amp;lt;i&amp;gt;__OBJC__&amp;lt;/i&amp;gt; is defined) and change various types and declarations to make themselves compatible, but the ObjC library doesn't define &amp;lt;i&amp;gt;__OBJC__&amp;lt;/i&amp;gt; because it also changes its declarations if this is already defined. You can't simply define &amp;lt;i&amp;gt;__OBJC__&amp;lt;/i&amp;gt; at the beginning of a program however, as it will cause a failure to build with &amp;lt;b&amp;gt;libobjc.a&amp;lt;/b&amp;gt;. The proper way to patch in compatibility is to modify the end of &amp;lt;b&amp;gt;objc.h&amp;lt;/b&amp;gt; (located at: &amp;lt;i&amp;gt;.../[version]/include/objc/objc.h&amp;lt;/i&amp;gt;), and import it in your program before you import the windows headers.&lt;br /&gt;
&lt;br /&gt;
==== Patch to objc.h ====&lt;br /&gt;
 157	IMP objc_msg_lookup(id receiver, SEL op);&lt;br /&gt;
 158&lt;br /&gt;
  158	#define __OBJC__	/* Insert Patch Here */&lt;br /&gt;
 159	#ifdef __cplusplus&lt;br /&gt;
 160	}&lt;br /&gt;
 161	#endif&lt;br /&gt;
 162&lt;br /&gt;
 163	#endif /* not __objc_INCLUDE_GNU */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test Build ==&lt;br /&gt;
&lt;br /&gt;
Here's a bare-bones project you can throw together to test if your C::B settings will compile ObjC correctly. You can't actually test with just strict C, since any problems with the Objective-C compiler will only manifest when using ObjC functionality.&lt;br /&gt;
&lt;br /&gt;
=== main.m ===&lt;br /&gt;
 #import &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #import &amp;quot;TestObject.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char** argv)&lt;br /&gt;
 {&lt;br /&gt;
 	TestObject *aTestObject = [[TestObject alloc] init];&lt;br /&gt;
 	printf(&amp;quot;Initial Value: %d\n&amp;quot;, [aTestObject value]);&lt;br /&gt;
 	printf(&amp;quot;+45 Value: %d\n&amp;quot;, [aTestObject add: 45]);&lt;br /&gt;
 	printf(&amp;quot;-63 Value: %d\n&amp;quot;, [aTestObject subtract: 63]);&lt;br /&gt;
 &lt;br /&gt;
 	[aTestObject add: 103];&lt;br /&gt;
 	printf(&amp;quot;+103 Value: %d\n&amp;quot;, [aTestObject value]);&lt;br /&gt;
 &lt;br /&gt;
 	return (EXIT_SUCCESS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== TestObject.h ===&lt;br /&gt;
 #import &amp;lt;objc/Object.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 @interface TestObject : Object&lt;br /&gt;
 {&lt;br /&gt;
 	int internalInt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 - (int)add:(int)anInt;&lt;br /&gt;
 - (int)subtract:(int)anInt;&lt;br /&gt;
 - (int)value;&lt;br /&gt;
 &lt;br /&gt;
 @end&lt;br /&gt;
&lt;br /&gt;
=== TestObject.m ===&lt;br /&gt;
 #import &amp;quot;TestObject.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 @implementation TestObject&lt;br /&gt;
 &lt;br /&gt;
 - (id)init&lt;br /&gt;
 {&lt;br /&gt;
 	if ((self = [super init]))&lt;br /&gt;
 	{&lt;br /&gt;
 		internalInt = 0;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	return self;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 - (int)add:(int)anInt&lt;br /&gt;
 {&lt;br /&gt;
 	internalInt += anInt;&lt;br /&gt;
 	return internalInt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 - (int)subtract:(int)anInt&lt;br /&gt;
 {&lt;br /&gt;
 	internalInt -= anInt;&lt;br /&gt;
 	return internalInt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 - (int)value&lt;br /&gt;
 {&lt;br /&gt;
 	return internalInt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 @end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Objective-C Library Licensing ==&lt;br /&gt;
&lt;br /&gt;
Unlike other libraries included with GCC, the Objective-C library may be statically linked into a project without extending the GNU GPL to that project. Although the library is covered under the GNU GPL itself, it has a special exemption in its license because it is a necessary library to compile a language.&lt;br /&gt;
&lt;br /&gt;
=== License Exemption ===&lt;br /&gt;
&lt;br /&gt;
 /* As a special exception, if you link this library with files compiled with&lt;br /&gt;
 GCC to produce an executable, this does not cause the resulting executable&lt;br /&gt;
 to be covered by the GNU General Public License. This exception does not&lt;br /&gt;
 however invalidate any other reasons why the executable file might be&lt;br /&gt;
 covered by the GNU General Public License */&lt;/div&gt;</summary>
		<author><name>Justin Brimm</name></author>
	</entry>
	<entry>
		<id>https://wiki.codeblocks.org/index.php?title=Installing_Objective-C_Compiler&amp;diff=6534</id>
		<title>Installing Objective-C Compiler</title>
		<link rel="alternate" type="text/html" href="https://wiki.codeblocks.org/index.php?title=Installing_Objective-C_Compiler&amp;diff=6534"/>
		<updated>2011-03-29T08:33:45Z</updated>

		<summary type="html">&lt;p&gt;Justin Brimm: Created Page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:User Documentation]]&lt;br /&gt;
== Setup the Compiler ==&lt;br /&gt;
&lt;br /&gt;
Objective-C is a strict superset of C; the additional functionality is obtained by linking to the Objective-C library when building using the standard &amp;lt;b&amp;gt;GNU GCC Compiler&amp;lt;/b&amp;gt;. This makes setting up a new compiler very simple, as we can make a copy of the standard compiler and change the linker settings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;i&amp;gt;&amp;lt;b&amp;gt;Caution:&amp;lt;/b&amp;gt; Make sure your GNU GCC Compiler is properly setup before attempting to setup for Objective-C&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Go to &amp;lt;i&amp;gt;Settings-&amp;gt;Compiler and debugger...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Select &amp;lt;b&amp;gt;GNU GCC Compiler&amp;lt;/b&amp;gt; and make a copy it; name it whatever you like, but &amp;quot;&amp;lt;b&amp;gt;GNU GCC Obj-C Compiler&amp;lt;/b&amp;gt;&amp;quot; would be the most descriptive.&lt;br /&gt;
&lt;br /&gt;
3) Under &amp;lt;i&amp;gt;Linker Settings&amp;lt;/i&amp;gt;, add &amp;lt;b&amp;gt;-lobjc&amp;lt;/b&amp;gt; to &amp;lt;i&amp;gt;Other linker options&amp;lt;/i&amp;gt;; you &amp;lt;u&amp;gt;don't&amp;lt;/u&amp;gt; need to explicitly add the libobjc.a library, as the flag tells gcc to include it for us.&lt;br /&gt;
&lt;br /&gt;
=== Shared Library Trouble ===&lt;br /&gt;
&lt;br /&gt;
In the past, there has been some trouble with the &amp;lt;b&amp;gt;-lobjc&amp;lt;/b&amp;gt; flag trying to link to &amp;lt;i&amp;gt;libobjc-2.dll&amp;lt;/i&amp;gt;, which had been a nonfunctional shared library for some time. It was recently repaired according to several newsgroup listings, but it is still suggested you remove it from your MinGW or GCC library search path and only leave the static library. This will not affect the license of your program.&lt;br /&gt;
&lt;br /&gt;
== Adding Filetype Support ==&lt;br /&gt;
&lt;br /&gt;
1) Go to &amp;lt;i&amp;gt;Settings-&amp;gt;Environment...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Select &amp;lt;b&amp;gt;Files extension handling&amp;lt;/b&amp;gt; and add &amp;lt;b&amp;gt;*.m&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3) Go to &amp;lt;i&amp;gt;Project-&amp;gt;Project tree-&amp;gt;Edit file types &amp;amp; categories...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
4) Under &amp;lt;b&amp;gt;Sources&amp;lt;/b&amp;gt;, add &amp;lt;b&amp;gt;*.m&amp;lt;/b&amp;gt; to the list of filetypes.&lt;br /&gt;
&lt;br /&gt;
== Proper Syntax Highlighting ==&lt;br /&gt;
&lt;br /&gt;
1) Go to &amp;lt;i&amp;gt;Settings-&amp;gt;Editor...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Select &amp;lt;b&amp;gt;Syntax highlighting&amp;lt;/b&amp;gt; and go to &amp;lt;b&amp;gt;Filemasks...&amp;lt;/b&amp;gt;. Add &amp;lt;b&amp;gt;*.m&amp;lt;/b&amp;gt; to the list of filetypes.&lt;br /&gt;
&lt;br /&gt;
3) Go to &amp;lt;b&amp;gt;Keywords...&amp;lt;/b&amp;gt; (next to &amp;lt;b&amp;gt;Filemasks...&amp;lt;/b&amp;gt;) and create a new set (up arrow). Add this to the &amp;lt;b&amp;gt;Keywords:&amp;lt;/b&amp;gt; box:&lt;br /&gt;
&lt;br /&gt;
=== Keywords ===&lt;br /&gt;
&lt;br /&gt;
 @interface @implementation @end id BOOL YES NO&lt;br /&gt;
&lt;br /&gt;
== Optional Changes ==&lt;br /&gt;
&lt;br /&gt;
1) Go to &amp;lt;i&amp;gt;Settings-&amp;gt;Compiler and dubugger...&amp;lt;/i&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2) Under &amp;lt;i&amp;gt;Other Settings&amp;lt;/i&amp;gt;, change &amp;lt;i&amp;gt;Compiler logging&amp;lt;/i&amp;gt; to &amp;lt;b&amp;gt;Full command line&amp;lt;/b&amp;gt;. If ObjC still refuses to build properly for you, you can use this to compare the command line arguments C::B uses against the commands you would use if you were building the program manually on the command line.&lt;br /&gt;
&lt;br /&gt;
3) Under &amp;lt;i&amp;gt;Other Settings&amp;lt;/i&amp;gt;, go to &amp;lt;i&amp;gt;Advanced Options&amp;lt;/i&amp;gt;. For &amp;lt;b&amp;gt;Link object files to executable&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Link object files to console executable&amp;lt;/b&amp;gt;, move &amp;lt;b&amp;gt;-o $exe_output&amp;lt;/b&amp;gt; to the end of the macros. For reasons beyond my understanding, GCC will sometimes (albeit rarely) complain during complex builds if this isn't the last argument on the line.&lt;br /&gt;
&lt;br /&gt;
== Important Notes ==&lt;br /&gt;
&lt;br /&gt;
1) By default, C::B will select &amp;lt;b&amp;gt;CPP&amp;lt;/b&amp;gt; as the default compiler variable for a new source file, and the file will not be compiled or linked to a target. Whenever you add or create a new ObjC source (&amp;lt;b&amp;gt;*.m&amp;lt;/b&amp;gt;) in your project, you must right-click on it and go to &amp;lt;i&amp;gt;Properties...&amp;lt;/i&amp;gt;. Under &amp;lt;b&amp;gt;advanced&amp;lt;/b&amp;gt;, change the &amp;lt;b&amp;gt;compiler variable&amp;lt;/b&amp;gt; to &amp;lt;b&amp;gt;CC&amp;lt;/b&amp;gt;. Under &amp;lt;b&amp;gt;Build&amp;lt;/b&amp;gt;, select both &amp;lt;b&amp;gt;Compile file&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;Link file&amp;lt;/b&amp;gt;. Before you close the dialog, go to &amp;lt;b&amp;gt;General&amp;lt;/b&amp;gt; and uncheck &amp;lt;b&amp;gt;File is read-only&amp;lt;/b&amp;gt;. This will automatically get selected when you change the other options and if you close the dialog before you uncheck it, you'll have to go back and change it, then close and reopen the file in the viewer before you can edit it.&lt;br /&gt;
&lt;br /&gt;
2) When you add a header file (&amp;lt;b&amp;gt;*.h&amp;lt;/b&amp;gt;), you'll also need to open up its properties window and change the compiler variable to &amp;lt;b&amp;gt;CC&amp;lt;/b&amp;gt;. You don't need to do anything else to it.&lt;br /&gt;
&lt;br /&gt;
== Test Build ==&lt;br /&gt;
&lt;br /&gt;
Here's a bare-bones project you can throw together to test if your C::B settings will compile ObjC correctly. You can't actually test with just strict C, since any problems with the Objective-C compiler will only manifest when using ObjC functionality.&lt;br /&gt;
&lt;br /&gt;
=== main.m ===&lt;br /&gt;
 #import &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
 #import &amp;quot;TestObject.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 int main(int argc, char** argv)&lt;br /&gt;
 {&lt;br /&gt;
 	TestObject *aTestObject = [[TestObject alloc] init];&lt;br /&gt;
 	printf(&amp;quot;Initial Value: %d\n&amp;quot;, [aTestObject value]);&lt;br /&gt;
 	printf(&amp;quot;+45 Value: %d\n&amp;quot;, [aTestObject add: 45]);&lt;br /&gt;
 	printf(&amp;quot;-63 Value: %d\n&amp;quot;, [aTestObject subtract: 63]);&lt;br /&gt;
 &lt;br /&gt;
 	[aTestObject add: 103];&lt;br /&gt;
 	printf(&amp;quot;+103 Value: %d\n&amp;quot;, [aTestObject value]);&lt;br /&gt;
 &lt;br /&gt;
 	return (EXIT_SUCCESS);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== TestObject.h ===&lt;br /&gt;
 #import &amp;lt;objc/Object.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 @interface TestObject : Object&lt;br /&gt;
 {&lt;br /&gt;
 	int internalInt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 - (int)add:(int)anInt;&lt;br /&gt;
 - (int)subtract:(int)anInt;&lt;br /&gt;
 - (int)value;&lt;br /&gt;
 &lt;br /&gt;
 @end&lt;br /&gt;
&lt;br /&gt;
=== TestObject.m ===&lt;br /&gt;
 #import &amp;quot;TestObject.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 @implementation TestObject&lt;br /&gt;
 &lt;br /&gt;
 - (id)init&lt;br /&gt;
 {&lt;br /&gt;
 	if ((self = [super init]))&lt;br /&gt;
 	{&lt;br /&gt;
 		internalInt = 0;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	return self;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 - (int)add:(int)anInt&lt;br /&gt;
 {&lt;br /&gt;
 	internalInt += anInt;&lt;br /&gt;
 	return internalInt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 - (int)subtract:(int)anInt&lt;br /&gt;
 {&lt;br /&gt;
 	internalInt -= anInt;&lt;br /&gt;
 	return internalInt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 - (int)value&lt;br /&gt;
 {&lt;br /&gt;
 	return internalInt;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 @end&lt;br /&gt;
&lt;br /&gt;
== Objective-C Library Licensing ==&lt;br /&gt;
&lt;br /&gt;
Unlike other libraries included with GCC, the Objective-C library may be statically linked into a project without extending the GNU GPL to that project. Although the library is covered under the GNU GPL itself, it has a special exemption in its license because it is a necessary library to compile a language.&lt;br /&gt;
&lt;br /&gt;
=== License Exemption ===&lt;br /&gt;
&lt;br /&gt;
 /* As a special exception, if you link this library with files compiled with&lt;br /&gt;
 GCC to produce an executable, this does not cause the resulting executable&lt;br /&gt;
 to be covered by the GNU General Public License. This exception does not&lt;br /&gt;
 however invalidate any other reasons why the executable file might be&lt;br /&gt;
 covered by the GNU General Public License */&lt;/div&gt;</summary>
		<author><name>Justin Brimm</name></author>
	</entry>
	<entry>
		<id>https://wiki.codeblocks.org/index.php?title=User_documentation&amp;diff=6533</id>
		<title>User documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.codeblocks.org/index.php?title=User_documentation&amp;diff=6533"/>
		<updated>2011-03-29T07:05:51Z</updated>

		<summary type="html">&lt;p&gt;Justin Brimm: /* Compilers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Code::Blocks Documentation]]&lt;br /&gt;
[[Category:User Documentation]]&lt;br /&gt;
== Official user document ==&lt;br /&gt;
The Official Code::Blocks user document can be found [https://www.codeblocks.org/user-manual here]&lt;br /&gt;
&lt;br /&gt;
== Articles for Code::Blocks users ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[[Installing Code::Blocks]]'''&lt;br /&gt;
&lt;br /&gt;
:How to install Code::Blocks (from binary or source)&lt;br /&gt;
&lt;br /&gt;
'''[[Keyboard Shortcuts]]'''&lt;br /&gt;
&lt;br /&gt;
:List of keyboard shortcuts that can be used in Code::Blocks&lt;br /&gt;
&lt;br /&gt;
'''[[Command line arguments]]'''&lt;br /&gt;
&lt;br /&gt;
:List of command-line arguments that can be used with Code::Blocks.&lt;br /&gt;
&lt;br /&gt;
'''[[Personalities]]'''&lt;br /&gt;
&lt;br /&gt;
:Customize the Code::Blocks user interface for different workflows.&lt;br /&gt;
&lt;br /&gt;
'''[[Code::Blocks Plugins]]'''&lt;br /&gt;
&lt;br /&gt;
:List of plugins that come with Code::Blocks.&lt;br /&gt;
&lt;br /&gt;
'''[[The build process of Code::Blocks]]'''&lt;br /&gt;
&lt;br /&gt;
:Information about how Code::Blocks actually builds your source code.&lt;br /&gt;
&lt;br /&gt;
'''[[Scripting Code::Blocks]]'''&lt;br /&gt;
:Information about scripting Code::Blocks with [http://www.squirrel-lang.org/ Squirrel].&lt;br /&gt;
&lt;br /&gt;
'''[[wxSmith tutorials]]'''&lt;br /&gt;
:Information about how to use wxSmith RAD editor&lt;br /&gt;
&lt;br /&gt;
'''[[Building an Non-Unicode Win32 Code::Blocks]]'''&lt;br /&gt;
:Information about how to modify the Code::Blocks project files for an Non-Unicode build of Code::Blocks.&lt;br /&gt;
&lt;br /&gt;
'''[[Code::Blocks and Makefiles]]'''&lt;br /&gt;
:Using makefiles with CB is not normally necessary (CB does this automatically) but if you have some compelling reason to use one - here's how.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''[[Miscellaneous]]'''&lt;br /&gt;
:Miscellaneous things related to the user development experience.  This is a catch all place.&lt;br /&gt;
&lt;br /&gt;
== Application development ==&lt;br /&gt;
&lt;br /&gt;
* [[Builtin variables]]&lt;br /&gt;
* [[Recommended global variables]]&lt;br /&gt;
* [[Code::Blocks variable types synthesis]]&lt;br /&gt;
* [[Debugging with Code::Blocks]]&lt;br /&gt;
* [[Adding support for non C/C++ files to the build system]]&lt;br /&gt;
&lt;br /&gt;
== Compilers ==&lt;br /&gt;
&lt;br /&gt;
* [[Global compiler variables]]&lt;br /&gt;
* [[Precompiled headers]]&lt;br /&gt;
* [[Installing a supported compiler]]&lt;br /&gt;
* [[Installing Cygwin Compiler]]&lt;br /&gt;
* [[Installing Fortran Compiler]]&lt;br /&gt;
* [[Installing Objective-C Compiler]]&lt;br /&gt;
* [[Installing Uniwin remote compiler]]&lt;br /&gt;
* [[Using Xming for remote compilation]]&lt;br /&gt;
* [[Code::Blocks_and_Cross_Compilers|Using cross compilers]]&lt;br /&gt;
* [[Cross_Compiling_wxWidgets_Applications_on_Linux|Cross compiling wxWidgets applications on Linux]]&lt;br /&gt;
* [[Integrating Microsoft Visual Toolkit 2003 with Code::Blocks IDE]]&lt;br /&gt;
* [[Integrating Microsoft Visual C 6 with Code::Blocks IDE]]&lt;br /&gt;
* [[64Bit Windows|Setting up for 64-bit windows development with Mirosoft compilers]]&lt;br /&gt;
* [[Using the Code::Blocks IDE with SDCC on PIC MCUs]]&lt;br /&gt;
* [[Using Code::Blocks with Open Watcom]]&lt;br /&gt;
* [[Developing 32 bit apps under 64 bit Linux (Ubuntu)]]&lt;br /&gt;
&lt;br /&gt;
== User interface development ==&lt;br /&gt;
&lt;br /&gt;
* [[WxSmith Tutorial &amp;amp; Pointers|Creating a dialog for wxWidgets with wxSmith]]&lt;br /&gt;
&lt;br /&gt;
== Third-party libraries ==&lt;br /&gt;
&lt;br /&gt;
* [[BoostWindowsQuickRef|Using Boost with Code::Blocks (Windows)]]&lt;br /&gt;
* [[WxWindowsQuickRef|Using wxWidgets with Code::Blocks (Windows)]]&lt;br /&gt;
* [[Using SDL with Code::Blocks]]&lt;br /&gt;
* [[Using GLFW with Code::Blocks]]&lt;br /&gt;
* [[Using Allegro with Code::Blocks]]&lt;br /&gt;
&lt;br /&gt;
== Third-party Applications ==&lt;br /&gt;
&lt;br /&gt;
* [[KiCadBuildQuickRef|How-to build KiCad with Code::Blocks]]&lt;/div&gt;</summary>
		<author><name>Justin Brimm</name></author>
	</entry>
</feed>