(Courriels de diversion: <releguerons@remploierions-fausserions.com> <rigoriste@imprevoyance-introspectif.com> <arrêtees@immuniserent-prefigurerent.com> <amorcerent@valse-hesitation-rengagement.com> <resiste@lancineront-perversions.com> <bandes@rapprocher-surestimaient.com> <immanents@pessimiste-faciliteriez.com> <vexeront@crotte-desargentee.com> <dissipions@recopierent-debarrassiez.com> <majeures@molestons-decaleront.com> )


Eric Marsden wrote:
> 
> >>>>> "JMF" == Jean Michel Flambard <jmflamba@mail.club-internet.fr> writes:> 
>   JMF> Comment faire sous Linux pour compiler plusieurs fichiers et faire
>   JMF> l'edition des liens afin de former 1 seul programme. (en C++ avec
>   JMF> g++)
>   JMF>
>   JMF> Exemple: j'ai 3 fichiers ecrit en C++
>   JMF>  truc.h  //Contient mes declarations de classes
>   JMF>  truc.cpp //Contient les definitions des classes
>   JMF>  et trucPrincipal.cpp // Ma fonction main
>   JMF>
>   JMF> et je voudrai avoir un fichier executable truc.exe ou quelque chose
>   JMF> comme ca.
> 
>     gcc -I . -c truc.cpp
>     gcc -I . -c trucPrincipal.cpp
>     gcc -o truc truc.o trucPrincipal.o -lm
> 
> La vraie solution est d'utiliser make, qui saura créer les .o à partir
> des .cpp, et automatiser le processus de compilation et linkage. Il
> suffirai d'une Makefile du style (lire la doc de make):
> 
>     CC = gcc
>     OBJ = truc.o trucPrincipal.o
> 
>     truc: $(OBJ)
>            $(CC) -o truc $(OBJ) -lm
	Je dirais meme, si tu t'en sens le courage, de lire la doc "The GNU
configure and build system"[1]. Il s'agit de documents livres avec les
sources d'autoconf, automake alocale libtool etc.... qui permet de creer
des scripts generateurs de makefiles quel que soit le systeme....
	C'est un peu long a expliquer ici mais si on prend un exemple ca va
vite eclaircir la chose :

	Voila tu ecris un programme pour linux sur ta becane perso ou tu es
root et ou tu as installe toutes tes librairies dans /usr/lib et dans
/usr/local/lib. Et arrive le grand jour ou tu decides de mettre ton
programme en opensource sur un serveur cvs afin que tout le monde puisse
en profiter et participer au developpement (ou sinon tu le pretes a un
pote pour lui montrer ce que fait ton programme). Mais voila, si tu
utilises pas autoconf automake etc, il y a fort a parier que tout cela
ne marchera pas... Par exemple si ton pote peut pas etre root et qu'en
plus il tourne sous Solaris, il y a fort a parier que des librairies
comme GTK+ soient installees quelque part dans son home (heresie je
sais). Il devra donc se retaper la Makefile pour changer tous ses path
pour les includes etc.... Ce qui n'est bien entendu pas cool.

	L'astuce proposee par automake [1.2] et autoconf [1.1] est axee autour
de shell scripts qui sont automatiquement generes a partir de fichiers
de conf (je vais pas trop detailler ;)). Ce fichier s'appelle configure
(tiens ca vous rappelle rien?). Il va, en fonction des desideratas du
programmeur, s'ammuser a faire un "Scan" de la config et de construire
un fichier "config.h", contenant les differents defines pour la
plateforme cible, et un fichier Makefile (ou plusieurs dans le cadre
d'un projet "arborescent") qui permettra de compiler _sans aucun
probleme_!
	Ton pote a donc juste a taper configure (suivi eventuellement de
d'options) puis make.... et ca compilatione :)

	
[1] voici les urls : 
 	[1.1] http://www.gnu.org/manual/autoconf/autoconf.html
	[1.2] pour automake : ftp://ftp.cygnus.com/pub/tromey/

-- 
J-C Arnu -----------------------------------------------------------JX-
Stagiaire DEA IFP - ENSEEIHT         		    |Phone : 0561336320
LAAS-CNRS - Groupe OLC -     7, avenue du colonel Roche, 31077 Toulouse

 _______________________________________________________________________
  Le CULTe sur le ouebe: http://savage.iut-blagnac.fr/