As a follow up to another question I recently asked, I realize my issue is that I don’t know how to include Apple ‘frameworks’ in the Eclipse CDT project properties so that they’re picked up and linked at compile time.
This results in includes in this form not to be resolved:
#include <OpenCL/cl.h>
Where the actual path would be something like:
/System/Library/Frameworks/OpenCL.framework/Versions/A/Headers
And the cmd line option would be (if I was manually compiling):
-framework OpenCL
In summary: How can I get Eclipse to see the framework(s) I want fromt he project properties?
Any help highly appreciated!
An alternative answer to JohnIdol’s answer. In particular, an approach that can work in the case that you don’t want to change the
<OpenCL/cl.h>reference to<cl.h>First, I came to the site with exactly this question in mind (how to include Apple ‘frameworks’ in Eclipse CDT (C/C++) projects) and I really appreciate the discussion – it gave me a starting point.
John’s answer is cool but it does involve changing how the include file is called (e.g.,
<OpenCL/cl.h>becomes<cl.h>in the code). Then he does a direct include-path reference in the eclipse properties for each Header directory he needs.In my case, I had checked-out GNU Backgammon to play around with the source code. This code compiles (with some mods to LDFLAGS and CPPFLAGS before doing the
autogen.sh) on the OS X CLI environment using the I-guess-standard apple approach of the-frameworkoption and with include files references like#include <CoreAudio/CoreAudioTypes.h>I may never actually commit anything but I didn’t want to start hacking the #includes in code that is already compiling just fine using the standard approach. So I did the following:
Inside that directory, make soft-links to the header directories.
In the gnubg project properties > C/C++ General> Paths and Symbols, added
/gnubg/Frameworksto the Include directories (as a workspace path). I only had to do this once, regardless of the number of soft links I made.This way I did not have to change the code at all, Eclipse was happy, CLI compilation was happy as well.
I note that there is a slight wrinkle if using some directories in Frameworks such as the
CoreServices.framework. In those cases there is a Frameworks subdirectory and relative path references in some of the include files (e.g.,..) to other include files. So in this case I had to modify the procedure a bit. Basically, I had to add an additional sub-directory in Frameworks forCoreServices.frameworkand then in that directory I had to add two soft links. One for the CoreServices (for the Headers) and one for Framework subdirectory.Then I had to add
/gnubg/Frameworks/CoreServices.frameworkto the include path (step 3 above).And that’s it. No more include file problems.