2010-08-11 1 views
2

Я использую фреймворк Sparkle в Qt. Я добавил следующее в мой файл .pro:Заголовки в сторонних фреймворках на Mac OS X

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

Однако я получаю ошибку компиляции, говоря «Sparkle/Sparkle.h» не может быть найден. Графические заголовки физически находятся в MyFramework.framework/Headers/*. H и включены как MyFramework/*. H

Какие команды мне нужно добавить в мой .pro-файл, чтобы правильно включить заголовки оболочки Sparkle?

+0

Я скопировал структуру в/System/Library/Frameworks, и мне удалось ее скомпилировать. Я до сих пор не могу связаться с ним. –

ответ

1

Проблема заключалась в том, что я использовал QMAKE_CXXFLAGS, мне нужно было использовать QMAKE_CFLAGS, чтобы компилятор включил заголовки.

+0

Я считаю, что это 'QMAKE_LFLAGS' от этого источника: http://qt-project.org/doc/qt-5.0/ qtdoc/QMAKE-платформы notes.html – stepanbujnak

0

Вы можете использовать INCLUDEPATH в файле .pro.

С Документами,

Эта переменная определяет #include каталоги, которые нужно производить поиск при составлении проекта. Использовать ';' или пробел в качестве разделителя каталогов.

Таким образом, в вашем случае это будет похоже,

INCLUDEPATH = MyFramework.framework/Headers 

где

MyFramework.framework/Headers является физическое расположение заголовков.

Я никогда не была использована для MAC OS, но все же надеюсь, что это помогает ..

Edit:

Если вы хотите включить как FrameWorkName/HeaderFile.h вы можете остановить с указанием ДО нужную папку.

Для например,

Если home/CommonFolder/FrameWorkName/HeaderFile.h является физическое местоположение вашего файла заголовка, вы можете дать INCLUDEPATH в

INCLUDEPATH = home/CommonFolder 

В вашей .cpp вы можете дать как #include "FrameWorkName/HeaderFile.h",

+0

Нет, это не работает, потому что вы должны включать 'FrameworkName/someheader.h', а не' someheader.h' напрямую. –

+0

@ Есть ли какая-то конкретная причина, по которой вы не хотите включать напрямую, и включать в себя, как 'FrameworkName/someheader.h' ?? – liaK

+0

Да, именно так вы должны включать все заголовки фреймворков, а заголовки внутри этой структуры имеют '#include ' в них, поэтому это должно быть сделано таким образом. Для фреймворков, находящихся в/Library/Frameworks, это работает автоматически, но где-то еще это проблема ... –