Qt创建者没有看到Mac框架

时间:2017-07-27 20:26:45

标签: c++ xcode macos qt opencl

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

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

软件或系统更新似乎已经破坏了Qt Creators'能够找到OpenGL和OpenCL标题的标题。

我已尝试重新安装Qt,重新安装Xcode和Mac SDK,但这些选项都不能正常运行。

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

让我们来看看OpenCL。我把它包括在内:

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

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

macx:QMAKE_LFLAGS += -framework OpenCL

有了这个似乎编译。但是QtCreator上面的两个OpenCL #include是黄色下划线,工具提示说&#34; OpenCL / cl.h:没有这样的文件或目录&#34;。

现在我可以看到它成功编译,因为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

所以我看不出有什么遗漏。

我试过&#34;教&#34;关于这个框架目录的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上找到系统框架的信息,以及我如何让它再次开始找到它们。任何帮助都会受到大力赞赏。

1 个答案:

答案 0 :(得分:0)

对于任何有同样问题的人来说,答案实际上最终都很简单。

当你在Qt creator中设置套件时(告诉它使用什么编译器和调试器)你需要小心使用的编译器。我的机器上有两个clang副本,一个安装在/ usr / bin(系统一个)中,另一个安装在XCode应用程序包中。我的工具包正在使用安装了Xcode的库,就像库所在的那样。虽然编译得很好,但Qt创建者出于某种原因并没有正确地连接到库的路径。简单地将其切换为使用/ usr / bin中的一个解决了它。

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