Toutes les libs et dépendances sont correctes installées sur ma machine linux. je peux compiler mon programme de test avec libwnck-3.0 dans un simple fichier make:comment intégrer libwnck-3.0 dans les autotools makefile.am
LDFLAGS = -lX11 `pkg-config --cflags --libs gtkmm-3.0 libwnck-3.0 `
CPPFLAGS = -g -Wall -Wno-reorder -std=c++11 `pkg-config --cflags gtkmm-3.0 libwnck-3.0`
OUTPUTDIR = bin
# Macro that uses the backslash to extend to multiple lines.
OBJS = \
main.o \
$(NULL)
all:$(OBJS)
$(CC) $(CPPFLAGS) -o$(OUTPUTDIR)/$(APPNAME) $(OBJS) $(LDFLAGS)
main.o:main.cpp
$(CC) -I$(INCLUDE) $(CPPFLAGS) -c main.cpp
...
le point est que pour compiler et lier libwnck-3.0 que je dois utiliser: pkg-config --cflags -libs libwnck-3.0
le compilateur g ++ compilera et reliez mon programme sans problèmes. Mais comment je peux le faire avec Autotools Makefile.am?
ici l'échantillon main.cpp:
#define WNCK_I_KNOW_THIS_IS_UNSTABLE 1
#include <libwnck/libwnck.h>
#include <gtkmm.h>
int main(int argc, char *argv[])
{
gdk_init (&argc, &argv);
//check if libwnck works
WnckScreen* wnckscreen = wnck_screen_get_default();
Gtk::Main kit(argc, argv);
Gtk::Window mainWindow;
Gtk::Button button("Click here");
mainWindow.set_title("GTKmm Demo");
mainWindow.set_border_width(4);
mainWindow.set_default_size(200, 50);
mainWindow.add(button);
button.show();
Gtk::Main::run(mainWindow);
return 0;
}
et ici le test Automake Makefile.am:
bin_PROGRAMS = testprogram
testprogram_SOURCES = main.cpp
# that is for gtkmm
testprogram_CPPFLAGS = $(GTKMM_CFLAGS)
# the include for libwnck-3.0
testprogram_CPPFLAGS += -I/usr/include/libwnck-3.0
testprogram_CPPFLAGS = $(GTKMM_CFLAGS)
# Linker flags
testprogram_LDFLAGS =`pkg-config --cflags --libs gtkmm-3.0 libwnck-3.0`
après l'exécution autogen.sh, ./configure et faire, il compile gtkmm mais j'obtiens une erreur de lien: référence undefine à wnck_screen_get_default() L'éditeur de liens ne peut pas trouver le package libwnck-3.0. ; O (
J'ai essayé plusieurs variations et passer des jours sur Google sans succès
Nous vous remercions d'avance pour toute aide
oui, PKG_CHECK_MODULES résoudre le problème. Merci! ; o) – yoo
Attention cependant à PKG_CHECK_MODULES, si vous l'utilisez incorrectement, il sera très difficile pour les utilisateurs de compiler votre programme ou votre bibliothèque (compilation et liaison avec des versions de dépendances autres que celles installées par votre gestionnaire de paquets) – Gunee