Makefile pour developpement multi-OS, multi-variants

crabs_makefile - 5.2 (c) 2003-2008 - Christophe Cazajus (crabs-mettre_le_signe_at-crabs-world.com)

Navigation

Présentation

Installation

Journal des Modifications

Feuille de route

Téléchargement

Fichiers Sources

--==--

Retour au site

Accueil du site

Man Pages

makefile

Intro

Binaires

Bibliotheque

PinfoGpl.sh

Pinfo

Crabs Makefile 5.0.1

Présentation sommaire des fonctionnalités de crabs_makefile 5.0.1

1) Environnement

Voici les variables d'environnement nécessaires au fonctionnement de crabs_makefile :

variables définissant l'OS (SOLARISx, LINUX, ...) localisation des includes pour les makefiles racine de l'installation des produits localisation des fichiers de traductions (gettext) dossier racine du projet en cours

Sauf PROJET, toutes les variables sont définies par le biais des fichiers crabs_mk.* localisés dans /etc/profile.d en fonction des paramètres de l'installation.

2) Le Makefile

Au travers de variables et d'un include vous allez définir ce que le makefile va construire. Résumé du plan du document :

ce qu'il y a faire comment le faire options des outils les variants lancer le make d'un autre dossier du projet identifier les biblithèque lors de l'édition de lien cas particulier : la gestion d'un site astuces et variables utiles

3) Ce qu'il y a faire

Les variables qui vous sont présentées définiront comment make se comportera : ce qu'il devra construire.

nom des sous-dossiers à 'compiler' nom du binaire à générer nom de la bibliothèque à générer noms des scripts contenus dans le dossier noms des fichiers de conf contenus dans le dossier

Un makefile ne pourra contenir les deux variables BIN et LIB - elles sont mutuellement exclusives. Une makefile pourra combiner toutes les variables.

4) Comment le faire

Les variables DIR, SBIN et ETC de par leur nom indique ce que l'on veut faire et par leur contenu sur "quoi" il faut le faire, ces deux informations suffisent pour que crabs_makfefile puissent faire son travail.

En revanche, pour une LIB ou un BIN, nous utiliserons une variable supplémentaire pour préciser les fichier sources qui contitueront les sources de la bibliothèque ou du binaire.

La particularité de crabs_makefile, c'est son mode de gestion des includes. En effet par le biais de l'extension, un fichier de type include pourra être partagé (utilisé par les autres sources dans d'autre dossier) ou rester local. La prise en compte de la précompilation par moc pour les fichiers include définissant des classes Q_OBJECT sera indiqué à crabs_makefile par le biais de l'extension donnée au nom du fichier.

Nous préciserons les fichier sources qui permettent de construire un binaire ou une bibliothèque dans la varibles SRC. Les extensions des nom de fichiers vont déterminer ce que crabs_makefile va faire des sources.

fichier include utilisable hors du dossier fichier include local au dossier fichier include qui contient une classe QT qui sera passé à moc. Il faut remplacer le qh en .h dans les fichiers utilisant cette classe idem que qh mais le fichier reste local. Conserver l'extension QH dans les souces utilisateur fichier écrit en langage C fichier écrit en langage C++ fichier écrit en Fortran 77 fichier lex (un par dossier) fichier yacc (un par dossier)

5 - Option des outils

	CFLAGS		option de la compilation C
	CPPFLAGS	option de la compilation C++
	F77FLAGS	option de la compilation Fortran 77
	SQLFLAGS	option de la compilation SQL C
	LFLAGS		option pour la compilation Lex
	YFLAGS		option pour la compilation Yacc
	LDFLAGS		option pour l'edition de lien
	LD		nom de l'editeur de lien

6 - Variants

	Ce makefile propose 2 variants par defaut :
	NORMAL		a utiliser pour la generation de produits finaux
	DEBUG		inclus les directives de debuggage lors des compil
	
	On peut rajouter ces propres variants
	Il faut definir alors les variables
		CF_$(VARIANT)	passer au compilateur
		LD_$(VARIANT)	passer au l'editeur de lien
	Exemple : variant TEST : defini TEST et option -g
		CF_TEST= -g -DTEST
		LD_TEST= -g
	Attention pour qu'un variant fonctionne correctement tous les
	objet du projet doivent pouvoir compiler ce variant
	
	Lancer les compils :
		Variant NORMAL : make -r
		autre variant : make -r VARIANT=...

	
7 - Creation d'une version de diffusion (experimental - abandonné)
	Variable DIFFUS a 'y'
	Pour une LIB :	copie le .a dans $(PROJET)/DIFFUS/$(OS)/LIB
			copie les .h de SRC dans $(PROJET)/DIFFUS/$(OS)/INCLUDE
	Pour un BIN :	copie $(BIN) dans $(PROJET)/DIFFUS/$(OS)/BIN
	pour SBIN :	copie les scripts identifier par $DIFFUS_SBIN dans
			$(PROJET)/DIFFUS/$(OS)/BIN
	
8 - Lancer le make d'un autre repertoire

	Il peut etre utile lors de la compil d'un binaire de verifier la compil
	d'une bibliotheque (ou plusieurs).
	Ceci se fait en renseignant la variable DIRP avec les noms des
	repertoires a verifier


9 - Identifier les lib du projet lors d'une edition de lien

	Les bibliotheques du projet courant sont identifiées dans la
	variable PLIB. On ne precise que le nom de la bibliotheque.
	Le Makefile se debrouille pour associer la bonne localisation
	en incluant l'OS et le VARIANT.
Haut de Page

Contacter crabs