'undefined reference to' avec cmake

Donc, je suis en train d'écrire une applet pour l'école, et cela nécessite l'utilisation de cmake. J'ai deux différentes classes contenues dans les dossiers qui leur sont propres, et je les utiliser dans le cadre de la classe principale. J'ai inclus dans leurs têtes comme tel dans le projet principal de l'en-tête:

#include /path/to/header/1.h
#include /path/to/header/2.h

Le problème que j'ai c'est que quand je lance le faire après que j'ai lancer cmake, je reçois pas défini d'erreurs de référence pour toute instance dans laquelle j'essaie d'utiliser l'une des deux bibliothèques. Je sais que cela a à faire avec l'éditeur de liens erreurs, mais depuis que je suis nouveau à cmake, je ne suis pas exactement sûr de ce que la bonne façon d'utiliser TARGET_LINK_LIBRARIES serait.

MODIFIER

Après la liaison/d'associer mes bibliothèques, j'ai le texte suivant:

CMakeLists.txt:

# A name for the project
project(plasma-engine-gdrive)

# Find the required libaries
find_package(KDE4 REQUIRED)
include(KDE4Defaults)

add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS}, -std=c++0x)
include_directories(
   ${CMAKE_SOURCE_DIR}
   ${CMAKE_BINARY_DIR}
   ${KDE4_INCLUDES}
   ./include
   ./lib
   )

set (GOOGLE_LIBS include/atom_helper.h include/util/string_utils.h include/client/doc_list_service.h include/client/service.h)
set (GOOGLE_SRCS include/atom_helper.cc include/util/string_utils.cc include/client/doc_list_service.cc include/client/service.cc)

# We add our source code here
set(gdrive_engine_SRCS gdriveengine.cpp)

add_library (DataWrapper include/DataWrapper.cpp include/DataWrapper.h)
add_library (GData ${GOOGLE_SRCS} ${GOOGLE_LIBS})

# Now make sure all files get to the right place
kde4_add_plugin(plasma_engine_gdrive ${gdrive_engine_SRCS})
target_link_libraries(plasma_engine_gdrive
                      GData
                      DataWrapper
                      ${KDE4_KDECORE_LIBS}
                      ${KDE4_PLASMA_LIBS})

install(TARGETS plasma_engine_gdrive
        DESTINATION ${PLUGIN_INSTALL_DIR})

install(FILES plasma-engine-gdrive.desktop
        DESTINATION ${SERVICES_INSTALL_DIR})

Il y a aussi trop d'erreurs pour les mettre ici. Voici quelques-uns:

/usr/include/c++/4.6/bits/stl_map.h:467: undefined reference to `Glib::ustring::ustring()'
lib/libGData.a(atom_helper.o): In function `pair<Glib::ustring, Glib::ustring, void>':
/usr/include/c++/4.6/bits/stl_pair.h:132: undefined reference to `Glib::ustring::ustring(Glib::ustring const&)'
/usr/include/c++/4.6/bits/stl_pair.h:132: undefined reference to `Glib::ustring::ustring(Glib::ustring const&)'
lib/libGData.a(atom_helper.o): In function `pair<Glib::ustring, Glib::ustring>':
/usr/include/c++/4.6/bits/stl_pair.h:137: undefined reference to `Glib::ustring::ustring(Glib::ustring const&)'
/usr/include/c++/4.6/bits/stl_pair.h:137: undefined reference to `Glib::ustring::ustring(Glib::ustring const&)'
Est que la façon dont vous avez réellement écrit le #include directives? Pas comme #include "/path/to/header/1.h" (notez les guillemets autour du chemin)?
Quand j'entends applet j'entends java
exemple réel, peut-être
Oui, c'était la façon dont j'ai écrit le #include. J'ai oublié d'écrire les guillemets quand je l'ai mis ici-bas.
Ce sont les premières de l'imprimé erreurs? D'où vient la Glib::ustring de référence proviennent de? C'est étrange de voir une référence à la Glib dans un projet qui utilise Qt et KDE. Notez également que vous vous référez à une cible plasma_engine_gdrive dans votre CMakeLists beaucoup, mais de ce que vous avez posté, ce n'est pas réellement une cible valide. Vous ne devez pas utiliser le nom du projet en tant que cible de l'identificateur de CMake.

OriginalL'auteur hal7df | 2013-05-15