c++ - Qt 创建者看不到 Mac 框架

标签 c++ xcode macos qt opencl

我在 macOS Sierra 10.12 上使用 Qt 5.6 和 Qt Creator 4.3。

我正在构建一个使用 OpenGL 和 OpenCL 的基于 Qt 的应用程序。

某处的软件或系统更新似乎破坏了 Qt Creators 查找 OpenGL 和 OpenCL header 的能力。

我已尝试重新安装 Qt、重新安装 Xcode 和 Mac SDK,但这些选项均无法正常工作。

奇怪的是我的应用程序编译。 QtCreator 本身无法找到 header - 这使得代码导航更加复杂。

让我们来看看 OpenCL。我像这样包括它:

#ifdef __APPLE__
#include <OpenCL/cl.h>
#include <OpenCL/opencl.h>
#endif

我的 qmake app.pro 文件里面有以下内容:

macx:QMAKE_LFLAGS += -framework OpenCL

有了这个它似乎可以编译。然而,QtCreator 中上面的两个 OpenCL #include 是带有黄色下划线的工具提示“OpenCL/cl.h:没有这样的文件或目录”。

现在我可以看到它编译成功,因为 qmake 正在计算框架所在的位置并成功附加路径:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -c -pipe -stdlib=libc++ -g -std=gnu++11 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -mmacosx-version-min=10.7 -Wall -W -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/Users/me/Projects/app -I. -I/Users/me/Qt5.6.2/5.6/clang_64/lib/QtWidgets.framework/Headers -I/Users/me/Qt5.6.2/5.6/clang_64/lib/QtGui.framework/Headers -I/Users/me/Qt5.6.2/5.6/clang_64/lib/QtCore.framework/Headers -I. -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/OpenGL.framework/Headers -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/AGL.framework/Headers -I. -I/Users/me/Qt5.6.2/5.6/clang_64/mkspecs/macx-clang -F/Users/me/Qt5.6.2/5.6/clang_64/lib -o main.o /Users/me/Projects/app/main.cpp

现在,如果我导航到以下目录,标题就在那里并且存在:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenCL.framework/Versions/A/p>

所以我看不到缺少什么。

我试图通过以下组合“教”Qt Creator 关于这个框架目录,但我还没有找到可行的方法:

macx:QMAKE_LFLAGS += -framework OpenCL
macx:INCLUDEPATH += /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenCL.framework/Versions/A/Headers
macx:QMAKE_LFLAGS += -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks
macx:LIBS += -framework OpenCL

我正在努力寻找有关 QtCreator 如何在 Mac 上找到系统框架以及我如何让它再次开始寻找它们的信息。非常感谢任何帮助。

最佳答案

对于任何遇到同样问题的人来说,答案其实很简单。

当您在 Qt Creator 中设置工具包时(它告诉它要使用的编译器和调试器等),您需要小心使用的编译器。我的机器上有两个 clang 拷贝,一个安装在/usr/bin(系统)中,另一个安装在 XCode 应用程序包中。我的工具包使用安装了 Xcode 的工具包作为库所在的位置。虽然这编译得很好,但出于某种原因,Qt creator 没有正确连接到库的路径。只需将其切换为使用/usr/bin 中的那个即可解决。

请注意,我没有明确要求它使用 Xcode 应用程序包中的那个,那只是在 Qt Creator 中首次打开项目时自动选择的那个。因此,您可能必须调整其默认行为才能解决问题。

关于c++ - Qt 创建者看不到 Mac 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45360417/

相关文章:

c++ - 使用 std::sort 和 boost::bind

objective-c - 使用 Swift 从父 pod 导入 Objective-C 销售框架(对于混合项目)

python - 如何在 macOS Sierra 上使用 tkinter 模块

macos - 使用 sbt 0.11.0 安装 Scala 2.9.1/Lift 2.4-M4

xcode - 如何为 NSTableView 单元格添加填充到单元格?

c++ - 在 C++ 语言中使用时间戳作为输入生成 V4 UUID

c++ - 多变光照条件下的多运动物体检测。

c++ - 我可以空基优化可变数据吗?

ios - 点击 addChild viewController 不起作用

xcode - OS X 10.7 : how to install XCode 4