作为我最近问过的another question的后续问题,我意识到我的问题是我不知道如何在Eclipse CDT项目属性中包含Apple'框架',以便它们被拾取和链接在编译时。
这导致此表格中的内容无法解决:
#include <OpenCL/cl.h>
实际路径如下:
/System/Library/Frameworks/OpenCL.framework/Versions/A/Headers
cmd行选项(如果我是手动编译的话):
-framework OpenCL
总结:如何让Eclipse从项目属性中看到我想要的框架?
任何帮助都非常感谢!
答案 0 :(得分:8)
JohnIdol回答的另一个答案。特别是,在您不希望将<OpenCL/cl.h>
引用更改为<cl.h>
的情况下,该方法可以正常工作
首先,我带着完全这个问题来到网站(如何在Eclipse CDT(C / C ++)项目中包含Apple'框架')我真的很感激讨论 - 它给了我是一个起点。
John的回答很酷,但确实涉及更改包含文件的调用方式(例如,<OpenCL/cl.h>
在代码中变为<cl.h>
。然后,他在eclipse属性中为他需要的每个Header目录执行直接包含路径引用。
在我的情况下,我已经检查了GNU步步高以使用源代码。此代码使用autogen.sh
选项的I-guess标准apple方法以及包含文件引用等编译(在执行-framework
之前对LDFLAGS和CPPFLAGS进行一些修改)(使用#include <CoreAudio/CoreAudioTypes.h>
选项的I-guess标准苹果方法
ln -s /System/Library/Frameworks/CoreAudio.framework/Headers CoreAudio
我可能永远不会实际提交任何内容,但我不想在使用标准方法编译好的代码中开始破解#includes。所以我做了以下事情:
在该目录中,制作指向标题目录的软链接。
/gnubg/Frameworks
在gnubg项目属性中&gt; C / C ++一般&gt;路径和符号,将CoreServices.framework
添加到Include目录(作为工作空间路径)。无论我制作的软链接数量多少,我只需要做一次。
这样我根本不需要更改代码,Eclipse很高兴,CLI编译也很开心。
我注意到如果在..
等框架中使用某些目录,会有轻微的皱纹。在这些情况下,有一些Frameworks子目录和一些包含文件(例如CoreServices.framework
)中的相对路径引用到其他包含文件。所以在这种情况下我不得不稍微修改一下程序。基本上,我必须在lrwxr-xr-x 1 dhansen staff 57B Jul 27 02:06 CoreServices -> /System/Library/Frameworks/CoreServices.framework/Headers
lrwxr-xr-x 1 dhansen staff 60B Jul 27 02:05 Frameworks -> /System/Library/Frameworks/CoreServices.framework/Frameworks
的Frameworks中添加一个额外的子目录,然后在该目录中我必须添加两个软链接。一个用于CoreServices(用于Headers),一个用于Framework子目录。
/gnubg/Frameworks/CoreServices.framework
然后我必须将{{1}}添加到包含路径(上面的步骤3) 就是这样。不再包括文件问题。
答案 1 :(得分:1)
由于当前的Eclipse CDT版本未正确执行子框架标头包含,因此您可以通过创建指向每个子框架的include目录的符号链接来避免子框架问题(如CoreServices头文件生成的问题)。我在下面的文章中详细阐述了这个主题,这个主题源于丹汉的回答:
http://thegreyblog.blogspot.com/2014/02/how-to-include-apple-frameworks-headers.html
为了自动完成这个过程,我创建了一个Z shell脚本,它自动执行这个过程,并创建指定框架的头目录的符号链接,以及指向每个子框架的include目录的链接。 。该脚本可在此处找到:https://github.com/emcrisostomo/link-osx-framework-headers
希望这有帮助。
答案 2 :(得分:0)
好的,所以我必须这样包括:
#include <cl.h>
然后在属性&gt;中添加包含头文件的文件夹。 C / C ++一般&gt;路径和符号导致编译器具有以下选项:
-I/System/Library/Frameworks/OpenCL.framework/Versions/A/Headers
最值得注意的是,必须在Properties&gt;下为库路径和框架包含添加以下选项。 C / C ++ Build&gt;设定:
-L/System/Library/Frameworks/OpenCL.framework/Versions/A/Libraries -framework OpenCL
以上就是这个伎俩。
答案 3 :(得分:0)
转到您的项目&gt;属性&gt; MacOS X C ++链接器&gt;命令 “g ++”添加“-framework OpenCL”