我在Xcode中有两个项目,它们都使用OpenCL和 cl.hpp -C++的OpenCL包装器。
我在Mac OS 10.11.4上,使用clang-703.0.29版本7.3.0和最新(且非常奇怪)的Xcode版本(7.3版(7D175))。
第一个项目可以很好地进行编译和构建。构建的结果是一个静态库(.a文件)。第二个使用该库(我只是将lib和 header 复制并粘贴到该项目的目录中)。我还将OpenCL.framework与此项目链接。
问题是,第二个项目没有建立。它说:

此错误在第75行:

kCGLPFAStereo OPENGL_ENUM_DEPRECATED(10_0, 10_11)        =   6,
这是我得到的唯一错误。当cl.hpp包含OpenCL/opencl.h(其中包括OpenCL/cl_gl_ext.h#include <OpenGL/CGLTypes.h>)时,就会发生这种情况。
基本SDK设置为“最新”(OS X 10.11)。 here发生了完全相同的问题,但已通过操作系统更新解决。我的Mac OS版本已经是最新的,所以我不能这样做。
综上所述,问题在于两个项目使用相同版本的OpenCL,它们是在具有相同设置,相同编译器等的同一台计算机上构建的,但是其中一个不会编译。
编辑:这是第一个项目的链接:Matrix on GitHub。我将尝试尽快添加第二个。实际上,它是使用Matrix进行矩阵运算的ANN。我唯一要做的就是包含Matrix的cl.hpp和所有.hpp。我还尝试与.a Matrix库链接,但是构建过程甚至还没有达到这个阶段。
我该怎么做才能解决这个问题?

最佳答案

好吧,问题在于第二个(“破损”)项目出于某种原因正在使用旧版本的Xcode工具(CreatedOnToolsVersion = 7.1)。第一个是使用CreatedOnToolsVersion = 7.3;构建的。

如果我在没有OpenCL支持的情况下构建Matrix并将第二个项目与生成的.a库链接,则一切正常,因此问题显然出在OpenCL和其他CreatedOnToolsVersion设置上。

通过创建一个新项目并在其中复制文件,解决了该问题。

特别感谢@Yakk在评论中的建议!

关于c++ - Xcode拒绝构建我的一个OpenCL项目,但成功构建了另一个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36250299/

10-09 08:05
查看更多