Bonjour à tous,
J'ai bien avancé sur un projet et je souhaite dans quelques temps pouvoir le distribuer, càd qu'il puisse s'installer sur divers systèmes Linux. Jusqu'à présent pour mes tests, je compilais mon projet selon la commande suivante :
J'ai suivi divers tuto pour la création d'un Makefile y compris celui présent ici, mais ce dernier utilise une méthode plus "manuel". Il me semble qu'il vaudrait mieux passer par les autotools, enfin c'est l'opinion que je me suis fait, notamment en décortiquant des Makefile de projets open source. Le problème, c'est que c'est la galère pour trouver un tuto clair sur le sujet. Bon, heureusement j'ai fini par me dépatouiller et voici comment je procède.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ~/ gcc -Wall main.c goopatch.c `pkg-config --libs gtk+-2.0 goocanvas gmodule-2.0 --cflags` -o cc10kx
J'ai crée d'abord un configure.ac modifié aux besoins, sur la base d'autoscan :
J'ai ensuite crée un Makefile.am pour chaque niveau de répertoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.60]) AC_INIT([goode], [0.1]) AM_INIT_AUTOMAKE([-Wall -Werror dist-bzip2]) AC_PROG_CC AM_PROG_CC_C_O AC_PROG_INSTALL AC_PROG_LIBTOOL AC_PROG_MAKE_SET AM_PATH_GTK_2_0([2.10.0],,AC_MSG_ERROR([Gtk+ 2.10.0 or higher required.])) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([ Makefile src/Makefile ]) AC_OUTPUT
Makefile.am en racine :
Makefile.am dans le dossier src :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SUBDIRS=src src/interface ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = HACKING CLEANFILES = *~
Ensuite, je lance dans l'ordre suivant les autotools pour créer les scripts :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 bin_PROGRAMS=goode goode_LDADD = \ $(GTK_LIBS) \ $(GOOCANVAS_LIBS) @GTK_LIBS@ goode_CFLAGS = \ $(GTK_CFLAGS) \ $(GOOCANVAS_CFLAGS) \ @GTK_CFLAGS@ \ $(PLATFORM_CFLAGS) goode_INCLUDES = \ $(GTK_CFLAGS) \ $(GOOCANVAS_CFLAGS) goode_SOURCES = \ main.c main.h \ goopatch.c goopatch.h \ callback.c \ asm_editor.c asm_editor.h \ config.c config.h \ functions.c functions.h \ patches.c patches.h \ presets.c presets.h \ routing.c routing.h \
autoheader --------> création du config.h.in
libtoolize -----------> création de scripts libtool
aclocal -------------> scripts aclocal
autoconf -----------> création du script .configure
automake -a -c ----> création du Makefile final
Tout se passe bien, je fais le classique ./configure, ok, pas de problème, puis le tout aussi classique make, là la compilation échoue puisqu'il ne trouve pas les libs de goocanvas. Je ne sais pas comment renseigner dans les divers fichiers de scripts de rechercher la présence de la lib goocanvas. A noter que je ne veux pas recopier les headers de goocanvas dans mon projet, je veux que les utilisateurs voulant le compiler doivent avoir la lib goocanvas d'installer.
Quelqu'un aurait une idée de comment renseigner l'utilisation de la lib goocanvas ?
Merci d'avance.
Partager