【发布时间】:2018-01-03 18:02:15
【问题描述】:
我在 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 带有黄色下划线,并带有工具提示“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 上找到系统框架以及如何让它重新开始找到它们的信息。任何帮助将不胜感激。
【问题讨论】: