【问题标题】:Xcode refuses to build one of my OpenCL projects but builds another one successfullyXcode 拒绝构建我的一个 OpenCL 项目,但成功构建了另一个
【发布时间】:2016-07-15 00:02:13
【问题描述】:

我在 Xcode 中有两个项目,它们都使用 OpenCL 和 cl.hpp - C++ 的 OpenCL 包装器。

我在 Mac OS 10.11.4 上,使用 clang-703.0.29 版本 7.3.0 和 Xcode 的最新(而且非常奇怪)版本(版本 7.3 (7D175))。

第一个项目编译和构建得非常好。构建的结果是一个静态库(.a 文件)。第二个使用这个库(我只是将库和标题复制并粘贴到这个项目的目录中)。我还将OpenCL.framework 与此项目相关联。

问题是,第二个项目没有构建。它说:

CGLTypes.h - 枚举数之间缺少“,”

此错误在第 75 行:

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

这是我得到的唯一错误。当cl.hpp 包含OpenCL/opencl.h,其中包含OpenCL/cl_gl_ext.h#include <OpenGL/CGLTypes.h> 时,就会发生这种情况。

Base SDK 设置为最新 (OS X 10.11)。发生了完全相同的问题here,但已通过操作系统更新解决。我的 Mac OS 版本已经是最新的,所以我不能这样做。

综上所述,问题在于两个项目使用相同版本的OpenCL,构建在同一台机器上,具有相同的设置、相同的编译器等,但其中一个无法编译。

编辑:这是第一个项目的链接:Matrix on GitHub。我会尽快添加第二个。实际上,它是一个使用 Matrix 对矩阵进行运算的 ANN。我唯一要做的就是包含cl.hpp 和来自Matrix 的所有.hpps。我也在尝试链接.a Matrix 库,但构建过程甚至没有进入这个阶段。

我应该怎么做才能解决这个问题?

【问题讨论】:

  • 32 位 64 位模糊可能?编译器、操作系统和绑定文件都可以吗?
  • @huseyintugrulbuyukisik,这发生在在同一台计算机上,使用相同的编译器。所以,我猜,他们还好
  • Framework 头文件的包含方式是否相同?也就是说,here 的答案是否能说明问题?
  • 从 diff 工具开始。复制两个项目。确认复印件上的问题。使用 diff 工具查找差异。消除它们,使用源代码控制能够回滚。最终产生触发问题的极小差异。
  • @ForceBru 这就是为什么许多开发人员不喜欢使用 IDE 来生成构建项目的原因:它们会生成您不理解的随机“功能”,并且可能会以您无法合理理解的方式中断。碰巧的是,文本编辑器通常处理生成的文件。而不是“使用 XCode 生成新项目”,复制 XCode 项目文件。寻找任何提及项目的绝对路径,修复它们。现在使用文本编辑器和差异工具和源代码管理来隔离问题。

标签: c++ xcode macos opencl


【解决方案1】:

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

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

通过创建一个新项目并将文件复制到那里解决了问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多