我在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/