accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Re: Règle pour Makefile

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.os.unix ] 

Retour : Accueil du site fr comp os unix   charte stats de ce groupe


  Sujet:   Re: Règle pour Makefile  
 De: thomas.nem...@betatech.invalid (Thomas Nemeth)
 Groupes: fr.comp.os.unix
 Organisation: BETAtech
 Date: 15. May 2008, 15:00:05
 References: 1 2
Matthieu Moy a tapoté :

> Thomas Nemeth <thomas.nemeth@betatech.invalid> writes:
> 
>>     Cependant j'aurais aimé faire en sorte que version.c ne soit
>>     pas recompilé à chaque fois que je lance "make" mais à chaque
>>     fois qu'au moins 1 fichier du projet est compilé...
>>
>>     Y a-t-il un moyen simple de faire ça ?
> 
> J'en vois au moins un :
> 
> executable: $(OBJS)
>         XXX > version.c
>         gcc -c version.c
>         gcc $(OBJS) version.o -o $@
> 
> mais je trouve pas ça très beau.

    Moi non plus :)
    Déjà le XXX n'est pas nécessaire : le fichier n'a pas vocation à
    être généré automatiquement. Il ne contient que, grosso-modo :

#include "config.h"
#define INFO PROGRAM" version "VERSION", build "BUILD".\n"
char * version_get_info(void)
{
        return INFO;
}

    Sachant que BUILD est passé en paramètre lors du make (-DBUILD=XXX)

    D'autre part, version.c existant au préalable, mon makefile a déjà
    une règle le compilant :

SRCS             = $(shell ls *.c)
OBJS             = $(SRCS:%.c=%.o)
[...]
%.o: %.c
        $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $<




> Ce qui est souvent fait dans ces cas là, c'est de dissocier la
> configuration de la compilation : on a une commande qui génère un
> Makefile ou un fichier de config du Makefile (le ./configure de
> beaucoup de logiciels), et on regarde le numéro de version à ce moment
> là. Ensuite, "make" ne s'en soucie plus.

    Dans mon cas, ce n'est nullement de la configuration mais un système
    de mise-à-jour automatique du numéro de build. En l'occurence, un
    système à double commande (genre un ./build qui ferait appel à make)
    ferait les commandes suivantes :
    if make -n | grep -qv version. ; then
        make
    fi

    Mais bon, j'aurais préféré gérer ça directement dans le makefile :
    je ne souhaite pas avoir une pléthore de fichiers spécifique au
    système de build dans mes projets :)


Thomas.


DateSujet  Auteur
01.01.
o 
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)