2017-01-23 13 views
1

Я работаю над проектом C++ в Qt Creator (на OS X), и я хочу использовать TagLib. После долгих исследований в Интернете, я изо всех сил пытаюсь понять, как добраться до точки, где я могу использовать библиотеку TagLib в своем проекте.Как настроить TagLib 1.11.1 как статическую библиотеку для моего проекта Qt Creator на OS X?

До сих пор у меня есть:

  • Скачан taglib-1.11.1.tar и Разархивирован содержимое.
  • Скачан CMake и использовал GUI для связи и сгенерировали эти файлы. (Я использовал опции CodeBlocks - Unix для этого, так как из того, что я нашел, это было предложено)
  • Отсюда я пробовал: a) Добавление сгенерированных файлов в качестве внешней библиотеки в проект Qt Creator. Однако, похоже, это просто добавить ~ 3 строки в мой текущий файл .pro, ссылающийся на путь файлов TagLib. b) Создание нового проекта специально для этой библиотеки ... c) размахивая головой о стену, пытаясь заставить ее работать.

Любая помощь с этим будет очень признательна, спасибо.

Edit:

Когда я добавить внешнюю библиотеку, то добавляется следующее моего файла .pro:

win32:CONFIG(release, debug|release): LIBS += -  L$$PWD/../../../Libraries/taglib-1.11.1/taglib/release/ -ltag 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../Libraries/taglib-1.11.1/taglib/debug/ -ltag 
else:mac: LIBS += -F$$PWD/../../../Libraries/taglib-1.11.1/taglib/ -framework tag 
else:unix: LIBS += -L$$PWD/../../../Libraries/taglib-1.11.1/taglib/ -ltag 

INCLUDEPATH += $$PWD/../../../Libraries/taglib-1.11.1/taglib 
DEPENDPATH += $$PWD/../../../Libraries/taglib-1.11.1/taglib 

тогда я бег QMAKE, и проект строит & работает отлично. Однако, если я попытаюсь сделать что-то вроде #include <tag.h>, я получаю сообщение об ошибке. В этом примере говорится: 'tstring.h' file not found #include "tstring.h". Затем, когда я удаляю строку ошибки, она дает другую ошибку, когда я запускаю ее framework not found taglinker command failed with exit code 1 (use -v to see invocation).

Edit:

код в .pro изменен:

#win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../Libraries/taglib-1.11.1/taglib/release/ -ltag 
#else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../Libraries/taglib-1.11.1/taglib/debug/ -ltag 
LIBS += -F$$PWD/../../../Libraries/taglib-1.11.1/taglib/ -ltag 
#else:unix: LIBS += -L$$PWD/../../../Libraries/taglib-1.11.1/taglib/ -ltag 

INCLUDEPATH += $$PWD/../../../Libraries/taglib-1.11.1/taglib 
DEPENDPATH += $$PWD/../../../Libraries/taglib-1.11.1/taglib 

Теперь я получаю ошибку library not found for -ltag.

Вот изображение файлов под ../Libraries/taglib-1.11.1 и варианты, которые я использовал в CMake link.

Edit:

Я установил в нем, используя следующие:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release 
    make 
    sudo make install 

Теперь каталог файлов в библиотеке выглядит как following. Затем я снова добавил внешний каталог в Qt. Так что теперь мой .pro файл содержит:

LIBS += -L$$PWD/../../../Libraries/taglib-1.11.1/taglib/ -ltag 

INCLUDEPATH += $$PWD/../../../Libraries/taglib-1.11.1/taglib 
DEPENDPATH += $$PWD/../../../Libraries/taglib-1.11.1/taglib 

PRE_TARGETDEPS += $$PWD/../../../Libraries/taglib-1.11.1/taglib/libtag.a 

Сейчас он работает нормально, если я пытаюсь сделать что-то вроде #include <tag.h>, и это дает ошибку 'tstring.h' file not found.

ответ

0

Если вы строите taglib только без его установки.

Вы должны иметь что-то вдоль линий:

INCLUDEPATH += \ 
    /path/to/taglib_source/taglib \ 
    /path/to/taglib_source/taglib/toolkit \ 
    /path/to/taglib_builddir/ 

LIBS += \ 
    -L/path/to/taglib_builddir/taglib \ 
    -ltag 

Если вы установили TagLib с использованием значений по умолчанию:

INCLUDEPATH += \ 
    /usr/local/include/taglib 

LIBS += \ 
    -L/usr/local/lib \ 
    -ltag 
+0

Просто сделал правку, обращаясь к этим. Спасибо – WhaleDancer

+0

Устранить условие 'else: mac', вы не получаете рамки при создании taglib, а в классической библиотеке. Обратите внимание, что это не ошибка, большая часть времени разработки макросов MacOS поставляется в комплекте под названием Frameworks. – SGaist

+0

Я внес изменения, которые вы предложили, но я столкнулся с другой ошибкой. Я обратился к нему в редакцию. Спасибо – WhaleDancer