Difference between revisions of "EiffelVision Cocoa"
 (→Solution)  | 
				|||
| Line 48: | Line 48: | ||
= FAQ =  | = FAQ =  | ||
==Problem==  | ==Problem==  | ||
| + | C compilation yelds syntax errors  | ||
| + | <pre>  | ||
| + | Compiling C code in C190  | ||
| + | In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:12,  | ||
| + |                  from /System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h:12,  | ||
| + |                  from ns6299.c:27,  | ||
| + |                  from big_file_C191_c.c:54:  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:124: error: stray '@' in program  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:124: error: syntax error before 'NSString'  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:126: error: syntax error before '*' token  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:127: error: syntax error before '*' token  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:129: error: syntax error before '*' token  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:130: error: syntax error before '*' token  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:132: error: syntax error before '*' token  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:132: error: syntax error before '*' token  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:133: error: syntax error before '*' token  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:133: error: syntax error before '*' token  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:137: error: syntax error before '*' token  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:138: error: syntax error before '*' token  | ||
| + | In file included from /System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:6,  | ||
| + |                  from /System/Library/Frameworks/Foundation.framework/Headers/NSAffineTransform.h:5,  | ||
| + |                  from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:13,  | ||
| + |                  from /System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h:12,  | ||
| + |                  from ns6299.c:27,  | ||
| + |                  from big_file_C191_c.c:54:  | ||
| + | /System/Library/Frameworks/Foundation.framework/Headers/NSZone.h:8: error: stray '@' in program  | ||
| + | </pre>  | ||
| + | ==Solution==  | ||
| + | Make sure your config.sh was changed to allow compiling Objective-C (see step 4 above).   | ||
| + | ==Problem==  | ||
| + | C compilation yields an linker error (symbols not found):  | ||
    Compiling C code in C1  |     Compiling C code in C1  | ||
    Compiling C code in E1  |     Compiling C code in E1  | ||
Revision as of 21:23, 20 August 2009
Contents
Overview
This project was created with the goal of running Eiffel Studio natively on the Mac and succeeds the previous Carbon based EiffelVision implementation.
Build instructions
-  Get the latest EiffelStudio for the Mac. If you have MacPorts installed you can do this by typing
   
port install eiffelstudio65
 -  Check out the latest source code from the trunk
   
svn co https://svn.origo.ethz.ch/eiffelstudio/trunk
 - Set your EIFFEL_SRC and ISE_LIBRARY to the directory 
export EIFFEL_SRC=/directory/to/your/checkout/trunk/Src export EIFFEL_SRC=$ISE_LIBRARY
 - Locate EiffelStudio's config.sh file (probably /Applications/MacPorts/Eiffel65/studio/spec/macosx-x86/include/config.sh) and add the flag -ObjC to the definition of the ccflags, like this:
ccflags='-ObjC -pipe -no-cpp-precomp -fno-common -fPIC'
 - Compile the C-parts of the library
cd $ISE_LIBRARY/experimental/library/objc_base/Clib finish_freezing -library cd $ISE_LIBRARY/experimental/library/cocoa/Clib finish_freezing -library
 - Now open the .ecf file of your project and add the following line to your target:
<variable name="vision_implementation" value="cocoa"/>
alternatively you can add another target which will allow you to easily compile both, a GTK+ and a Cocoa version of your application:
<target name="cocoa" extends="classic"> <variable name="vision_implementation" value="cocoa"/> </target>If you want to compile Eiffel Studio there is already a target called "bench_cocoa" which you can select.
 - Use ec -experiment (or estudio -experiment) to compile
 
FAQ
Problem
C compilation yelds syntax errors
Compiling C code in C190 In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:12, from /System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h:12, from ns6299.c:27, from big_file_C191_c.c:54: /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:124: error: stray '@' in program /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:124: error: syntax error before 'NSString' /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:126: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:127: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:129: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:130: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:132: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:132: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:133: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:133: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:137: error: syntax error before '*' token /System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:138: error: syntax error before '*' token In file included from /System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:6, from /System/Library/Frameworks/Foundation.framework/Headers/NSAffineTransform.h:5, from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:13, from /System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h:12, from ns6299.c:27, from big_file_C191_c.c:54: /System/Library/Frameworks/Foundation.framework/Headers/NSZone.h:8: error: stray '@' in program
Solution
Make sure your config.sh was changed to allow compiling Objective-C (see step 4 above).
Problem
C compilation yields an linker error (symbols not found):
Compiling C code in C1 Compiling C code in E1 Undefined symbols: "_bridge_void_general", referenced from: _bridge_void_general$non_lazy_ptr in Cobj160.o "_bridge_void_ptr_ptr", referenced from: _bridge_void_ptr_ptr$non_lazy_ptr in Cobj160.o ld: symbol(s) not found collect2: ld returned 1 exit status make: *** [ec] Error 1
Solution
Make sure you compiled the C-parts of the libraries (see step 5 above).
Contact
If you run into any problems or have any other feedback I'll be happy to hear from you.

