This forum has been archived. All content is frozen. Please use KDE Discuss instead.

[geloest]Develop 4.2 - wie taglib einbinden? linker schlaegt

Tags: None
(comma "," separated)
ds2k5
Registered Member
Posts
3
Karma
0
Hallo,
ich habe openSuSE 12.1 (64bit) mit kDevelop 4.2.3 und taglib-devel 1.7.

Auszug aus dem source code

#include <taglib/tag.h>
#include <taglib/fileref.h>
...
TagLib::FileRef ("Latex Solar Beef.mp3");

Dann bekomme ich beim linken diese Fehlermeldung:

/home/developer/projects/mcm/build> make
Scanning dependencies of target mcm
[ 33%] Building CXX object CMakeFiles/mcm.dir/mcm.cpp.o
Linking CXX executable mcm
CMakeFiles/mcm.dir/mcm.cpp.o: In function `mcm::startMerge()':
mcm.cpp:(.text+0x1521): undefined reference to `TagLib::FileRef::FileRef(char const*, bool, TagLib::AudioProperties::ReadStyle)'
mcm.cpp:(.text+0x1529): undefined reference to `TagLib::FileRef::~FileRef()'
CMakeFiles/mcm.dir/mcm.cpp.o: In function `mcm::qt_metacall(QMetaObject::Call, int, void**)':
mcm.cpp:(.text+0x173a): undefined reference to `TagLib::FileRef::FileRef(char const*, bool, TagLib::AudioProperties::ReadStyle)'
mcm.cpp:(.text+0x1742): undefined reference to `TagLib::FileRef::~FileRef()'
CMakeFiles/mcm.dir/mcm.cpp.o: In function `mcm::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':
mcm.cpp:(.text+0x1801): undefined reference to `TagLib::FileRef::FileRef(char const*, bool, TagLib::AudioProperties::ReadStyle)'
mcm.cpp:(.text+0x1809): undefined reference to `TagLib::FileRef::~FileRef()'
collect2: ld returned 1 exit status
make[2]: *** [mcm] Error 1
make[1]: *** [CMakeFiles/mcm.dir/all] Error 2
make: *** [all] Error 2
*** Fehlgeschlagen ***


Wie binde ich denn die Lib richtig ein, das das kompilieren
auch klappt ?

Danke

Last edited by ds2k5 on Thu Mar 01, 2012 3:41 pm, edited 1 time in total.
User avatar
Mamarok
Manager
Posts
6071
Karma
16
OS
Bist du sicher, dass diese lib so heisst und nicht eher libtag*?


Running Kubuntu 22.10 with Plasma 5.26.3, Frameworks 5.100.0, Qt 5.15.6, kernel 5.19.0-23 on Ryzen 5 4600H, AMD Renoir, X11
FWIW: it's always useful to state the exact Plasma version (+ distribution) when asking questions, makes it easier to help ...
User avatar
punkkeks
Registered Member
Posts
4
Karma
0
OS
du benutzt anscheinend cmake
http://www.cmake.org/cmake/help/examples.html

dann bist du sicher, dass du
a) taglib installiert hast?
b) du das ganze bei cmake mit einbindest (s.o.)
c) die richtige version benutzt (sehr wahrscheinlich schon)

Grüße
User avatar
Milian Wolff
KDE Developer
Posts
61
Karma
1
OS
Das ist nen Linker-Fehler, wie hast du die Library denn in deiner CMakeLists.txt eingebunden?

Siehe auch:

http://www.cmake.org/cmake/help/cmake_tutorial.html

i.Bs. find_package & target_link_libraries brauchst du.


current KDE projects: Quanta, KDevelop, Kate
ds2k5
Registered Member
Posts
3
Karma
0
hallo,
vielen dank fuer die schnelle reaktion von euch allen!


@Mamarok

>Bist du sicher, dass diese lib so heisst und nicht eher libtag*?

sorry da hast du recht


@punkkeks

>a) taglib installiert hast?

taglib-1.7-8.1.2.x86_64
libtag1-1.7-8.1.2.x86_64


>du das ganze bei cmake mit einbindest (s.o.)

wo macht man das bei kDevelop ?

>die richtige version benutzt (sehr wahrscheinlich schon)

richtige version von was ?

@Milian Wolff

>Das ist nen Linker-Fehler, wie hast du die Library denn in deiner >CMakeLists.txt eingebunden?

Wenn ich wüste wie ich das dem kDevelop beibringe
User avatar
Milian Wolff
KDE Developer
Posts
61
Karma
1
OS
lies bitte die cmake tutorials und dann öffne halt die cmakelists.txt und füge die passenden Zeilen hinzu.


current KDE projects: Quanta, KDevelop, Kate
ds2k5
Registered Member
Posts
3
Karma
0
ok super danke, d.h. im kDevel 4.2 kann man da nichts einstellen?

so gehts !

CMakeLists.txt

project(mcm)
cmake_minimum_required(VERSION 2.6)
find_package(Qt4 REQUIRED)

include_directories(${QT_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR} /usr/include/taglib)

set(mcm_SRCS mcm.cpp main.cpp)
qt4_automoc(${mcm_SRCS})
add_executable(mcm ${mcm_SRCS})
target_link_libraries(mcm ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} tag)
User avatar
scummos
Global Moderator
Posts
1175
Karma
7
OS
KDevelop hat kein eigenes Buildsystem. Es unterstützt dich nur dabei, die CMakeLists.txt-Dateien zu bearbeiten -- man kann also in KDevelop generell nicht einstellen, wie die Anwendung übersetzt wird (außer ein paar Konfigurations-Optionen für cmake). Insofern hat dein Problem eigentlich gar nichts mit KDevelop zu tun, sondern nur mit CMake :)

Übrigens: Was du da machst, geht zwar, ist aber keine gute Lösung. Stattdessen solltest du FIND_PACKAGE benutzen, um die Bibliothek zu finden.


I'm working on the KDevelop IDE.


Bookmarks



Who is online

Registered users: Bing [Bot], Evergrowing, Google [Bot]