2010-08-11 70 views
2

我在Qt中使用Sparkle框架。我已經添加了以下到我的.pro文件:Mac OS X上的第三方框架中的標頭

LIBS += -framework Sparkle 
QMAKE_CXX_FLAGS += -F/path/to/the/directory/sparkle.framework/is/in 

不過,我得到一個編譯錯誤說:「耀/ Sparkle.h」無法找到。框架標題實際上駐留在MyFramework.framework/Headers/*。h中,並且包含像MyFramework/*。h

我需要將哪些命令添加到我的.pro文件以正確包含Sparkle框架標頭?

+0

我將框架複製到/ System/Library/Frameworks中,並且我能夠將它編譯。我仍然無法把它鏈接起來。 – 2012-07-27 21:14:19

回答

1

問題是我使用QMAKE_CXXFLAGS,我需要使用QMAKE_CFLAGS來讓編譯器包含頭文件。

+0

我相信這是源於以下內容的「QMAKE_LFLAGS」:http://qt-project.org/doc/qt-5.0/ qtdoc/QMAKE平臺,notes.html – stepanbujnak 2013-07-21 21:02:09

0

您可以在.pro文件中使用INCLUDEPATH

從文檔,

這個變量指定應編制項目時要搜索的目錄的#include。使用 ';'或作爲目錄分隔符的空間。

所以,在你的情況下,它會像,

INCLUDEPATH = MyFramework.framework/Headers 

其中

MyFramework.framework/Headers是頭部的物理位置

我從來沒有被用於MAC OS但還是希望它有助於..

編輯

如果你想包括像FrameWorkName/HeaderFile.h你可以指定高達所需的文件夾停止。

對於例如,

如果home/CommonFolder/FrameWorkName/HeaderFile.h是你的頭文件的物理位置,你可以給INCLUDEPATH作爲

INCLUDEPATH = home/CommonFolder 

現在在你的.cpp你可以給喜歡#include "FrameWorkName/HeaderFile.h"

+0

不,這不起作用,因爲你的意思是直接包含'FrameworkName/someheader.h',而不是'someheader.h'。 – 2010-08-11 08:57:38

+0

@是否有任何特定的原因,你不想直接包含幷包含像'FrameworkName/someheader.h'? – liaK 2010-08-11 09:09:22

+0

是的,這就是你應該如何包含所有框架頭文件,並且該框架中的頭文件中包含'#include ',所以它必須以這種方式完成。對於駐留在/ Library/Frameworks中的框架,它似乎是自動工作的,但是在其他任何地方都是這樣的問題... – 2010-08-11 18:32:28