I somehow cannot compile Objective-C files with GCC 4.7, which include any major OSX libraries, such as:
#import <Foundation/Foundation.h>
The resulting error always leads to a strange GCC output:
gcc -c -pipe -O2 -arch x86_64 -mmacosx-version-min=10.8 -Wall -W -I/usr/local/Cellar/qt/4.8.4/mkspecs/macx-g++ -I../TerrainFluid -I../TerrainFluid/external -I../TerrainFluid -I. ../TerrainFluid/external/osx_bundle.mm -o osx_bundle.o
In file included from
/System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:123:0,
from ../TerrainFluid/external/osx_bundle.mm:24:
/System/Library/Frameworks/Foundation.framework/Headers/NSTask.h:69:24: error: expected unqualified-id before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSTask.h:69:24: error: expected ')' before '^' token
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:159:0,
from ../TerrainFluid/external/osx_bundle.mm:24:
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:36:15: error: expected unqualified-id before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:36:15: error: expected ')' before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:37:39: error: expected type-specifier before 'NSUserScriptTaskCompletionHandler'
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:53:15: error: expected unqualified-id before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:53:15: error: expected ')' before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:54:70: error: expected type-specifier before 'NSUserUnixTaskCompletionHandler'
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:68:15: error: expected unqualified-id before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:68:15: error: expected ')' before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:69:82: error: expected type-specifier before 'NSUserAppleScriptTaskCompletionHandler'
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:86:15: error: expected unqualified-id before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:86:15: error: expected ')' before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSUserScriptTask.h:87:72: error: expected type-specifier before 'NSUserAutomatorTaskCompletionHandler'
In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:160:0,
from ../TerrainFluid/external/osx_bundle.mm:24:
/System/Library/Frameworks/Foundation.framework/Headers/NSXPCConnection.h:46:11: error: expected unqualified-id before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSXPCConnection.h:46:11: error: expected ')' before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSXPCConnection.h:46:11: error: expected ';' before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSXPCConnection.h:47:11: error: expected unqualified-id before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSXPCConnection.h:47:11: error: expected ')' before '^' token
/System/Library/Frameworks/Foundation.framework/Headers/NSXPCConnection.h:47:11: error: expected ';' before '^' token
make: *** [osx_bundle.o] Error 1
The way to solve this problem was to simply use the Apple compiler for Objective-C and g ++ (4.7) files for the rest of the code.
gcc -> /usr/bin/llvm-gcc
g++ -> /usr/local/bin/g++-4.7
I would use clang for all the code, but it does not yet support OpenMP, and gcc-4.2 does not support C ++ 11.
Here is an example of the file I used (this is the OSD Wildfire Games bootloader). I read on a blog that Apple implemented the GCC blocker to stop compiling with GCC.
-Apple GCC (, GCC 4.7)? , Apple.