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 :

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 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.

J'ai crée d'abord un configure.ac modifié aux besoins, sur la base d'autoscan :
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
J'ai ensuite crée un Makefile.am pour chaque niveau de répertoire.

Makefile.am en racine :
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 = *~
Makefile.am dans le dossier src :
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			\
Ensuite, je lance dans l'ordre suivant les autotools pour créer les scripts :
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.