2017-07-27 51 views
0

我在macOS Sierra 10.12上使用Qt 5.6与Qt Creator 4.3。Qt创建者没有看到Mac Frameworks

我正在构建一个使用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#包括一个提示“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

所以我看不到什么是缺失。

我曾经试图“教” 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上的系统框架以及如何让它再次开始找到它们。任何帮助将大规模赞赏。

回答

0

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

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

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