Qt 创建者没有看到 Mac 个框架
Qt creator not seeing Mac Frameworks
我在 macOS Sierra 10.12 上使用 Qt 5.6 和 Qt Creator 4.3。
我正在构建一个使用 OpenGL 和 OpenCL 的基于 Qt 的应用程序。
某处的软件或系统更新似乎破坏了 Qt Creators 为 OpenGL 和 OpenCL headers 找到 headers 的能力 headers。
我已经尝试重新安装 Qt,重新安装 Xcode 和 Mac SDK 以及 none 这些选项使其工作。
奇怪的是我的应用程序编译。 QtCreator 就是找不到 headers 本身——这使得代码导航更加复杂。
所以让我们来看看 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: No such file or directory".
现在我可以看到它编译成功,因为 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
现在,如果我导航到以下目录,headers 就在那里并存在:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenCL.framework/Versions/A
所以我看不出少了什么。
我已经尝试 "teach" 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 中首次打开项目时自动选择的那个。因此,您可能必须调整其默认行为才能解决问题。
我在 macOS Sierra 10.12 上使用 Qt 5.6 和 Qt Creator 4.3。
我正在构建一个使用 OpenGL 和 OpenCL 的基于 Qt 的应用程序。
某处的软件或系统更新似乎破坏了 Qt Creators 为 OpenGL 和 OpenCL headers 找到 headers 的能力 headers。
我已经尝试重新安装 Qt,重新安装 Xcode 和 Mac SDK 以及 none 这些选项使其工作。
奇怪的是我的应用程序编译。 QtCreator 就是找不到 headers 本身——这使得代码导航更加复杂。
所以让我们来看看 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: No such file or directory".
现在我可以看到它编译成功,因为 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
现在,如果我导航到以下目录,headers 就在那里并存在:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/OpenCL.framework/Versions/A
所以我看不出少了什么。
我已经尝试 "teach" 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 中首次打开项目时自动选择的那个。因此,您可能必须调整其默认行为才能解决问题。