2017-07-27 98 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創建器中首次打開項目時自動選擇的那個包。所以你可能必須調整它的默認行爲才能解決問題。