Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Xcode refuses to build one of my OpenCL projects but builds another one successfully

I've got two projects in Xcode, both of them use OpenCL and cl.hpp - OpenCL wrappers for C++.

I'm on Mac OS 10.11.4, using clang-703.0.29 version 7.3.0 and the latest (and pretty bizarre) version of Xcode (Version 7.3 (7D175)).

The first project compiles and builds very well. The result of a build is a static library (.a file). The second one uses this library (I'm just copying & pasting the lib and the headers into this project's directory). I'm also linking OpenCL.framework with this project.

The problem is, the second project doesn't build. It says:

CGLTypes.h - Missing ',' between enumerators

This error is on line 75:

kCGLPFAStereo OPENGL_ENUM_DEPRECATED(10_0, 10_11)        =   6, 

It is the only error I'm getting. This happens when cl.hpp includes OpenCL/opencl.h which includes OpenCL/cl_gl_ext.h with #include <OpenGL/CGLTypes.h> in it.

The Base SDK is set to Latest (OS X 10.11). Exactly the same problem has occurred here, but it has been resolved by an OS update. My Mac OS version is already the latest, so I can't do this.

To sum up, the problem is that two projects use the same version of OpenCL, are built on the same machine with the same settings, the same compiler, etc, but one of them doesn't compile.

Edit: here's a link to the first project: Matrix on GitHub. I'll try to add the second one as soon as possible. In fact, it's an ANN that uses Matrix to do operations with matrices. The only thing I do is I include cl.hpp and all the .hpps from Matrix. I'm also trying to link with the .a Matrix library, but the build process doesn't even get to this phase.

What should I do to fix that?

like image 697
ForceBru Avatar asked Mar 27 '16 17:03

ForceBru


1 Answers

Well, the problem was that the second ('broken') project was using the old version of Xcode tools (CreatedOnToolsVersion = 7.1) for some reason. The first one was built with CreatedOnToolsVersion = 7.3;.

If I build Matrix without OpenCL support and link the second project with the generated .a library, everything works fine, so the problem was clearly with OpenCL and different CreatedOnToolsVersion settings.

The problem was solved by creating a new project and copying the files there.

Special thanks to @Yakk for their suggestion in the comments!

like image 140
ForceBru Avatar answered Sep 16 '22 23:09

ForceBru