2017-01-23 1 views
1

Ich arbeite an einem C++ Projekt in Qt Creator (unter OS X), und ich möchte TagLib verwenden. Nach vielen Online-Recherchen habe ich Schwierigkeiten, herauszufinden, wie ich die TagLib-Bibliothek in meinem Projekt verwenden kann.Wie richte ich TagLib 1.11.1 als statische Bibliothek für mein Qt Creator-Projekt unter OS X ein?

Bisher habe ich:

  • heruntergeladen taglib-1.11.1.tar und unarchivierten den Inhalt.
  • Heruntergeladen CMake und verwendet die GUI zu konfigurieren und generieren diese Dateien. (Ich habe die CodeBlocks - Unix-Optionen dafür verwendet, was ich vorgeschlagen habe.)
  • Von hier aus habe ich versucht: a) Die generierten Dateien als externe Bibliothek zu meinem Qt Creator Projekt hinzufügen. Dies scheint jedoch nur 3 Zeilen zu meiner aktuellen .pro-Datei hinzuzufügen, die auf den Pfad der TagLib-Dateien verweist. b) ein neues Projekt speziell für diese Bibliothek anlegen ... c) Zerschlagung meinen Kopf gegen die Wand versuchen, diese Arbeit zu bekommen.

Jede Hilfe mit diesem würde sehr geschätzt werden, danke.

Edit:

Wenn ich die externe Bibliothek hinzufügen, wird hinzugefügt, um meine .proDatei:

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 

ich dann Qmake laufen, und das Projekt baut & läuft gut. Wenn ich jedoch versuche, etwas wie #include <tag.h> zu tun, erhalte ich einen Fehler. In diesem Beispiel heißt es 'tstring.h' file not found #include "tstring.h". Dann, wenn ich die Fehlerzeile lösche, gibt es einen anderen Fehler, wenn ich es framework not found taglinker command failed with exit code 1 (use -v to see invocation) laufen lasse.

Edit:

Code in .pro geändert:

#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 

Jetzt habe ich den Fehler library not found for -ltag bekommen.

Hier ist ein Bild der Dateien unter ../Libraries/taglib-1.11.1 und die Optionen, die ich in CMake link verwendet.

Edit:

ich in installiert mit dem folgenden:

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

nun das Verzeichnis der Dateien in der Bibliothek sieht aus wie die following. Dann habe ich das externe Verzeichnis in Qt neu hinzugefügt. So, jetzt meine .pro-Datei enthält:

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 

Jetzt läuft es gut, es sei denn, ich versuche, so etwas wie #include <tag.h> zu tun und es gibt den Fehler 'tstring.h' file not found.

Antwort

0

Wenn Sie Taglib nur ohne Installation erstellen.

Sie sollten etwas entlang der Linien von haben:

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

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

Wenn Sie taglib mit den Standardeinstellungen installiert:

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

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

gerade bearbeitet, diese Adressierung. Danke – WhaleDancer

+0

Entfernen Sie die 'else: mac'-Klausel, Sie erhalten kein Framework beim Erstellen von Taglib, sondern eine klassische Bibliothek. Beachten Sie, dass dies kein Bug ist. Die meiste Zeit kommen macOS-Entwicklungswerkzeuge im Bundle namens Frameworks. – SGaist

+0

Ich habe die Änderung vorgenommen, die Sie vorgeschlagen haben, aber ich renne zu einem anderen Fehler. Ich habe es in einer Bearbeitung angesprochen. Danke – WhaleDancer