Je compile habituellement mes propres programmes grâce à un
système de build fait maison basé, bien évidemment, sur make
(grosso-modo : un fichier spécifique au projet, inclu dans
un Makefile générique).
Pour mes projets, j'ai un fichier "version.c" qui contient
la chaîne de description de la version du projet (comme son
nom l'indique) et qui est recompilé à chaque fois que je
lance une compilation (générant une chaîne de la forme
"X.Y.Z-B", avec B le numéro de build).
Pour l'instant, la règle pour (gnu-)make que j'utilise est
la suivante :
---8<------------------------------
version.o: FORCE
FORCE:
---8<------------------------------
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é...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Matthieu Moy
Thomas Nemeth 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é...
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.
-- Matthieu
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é...
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.
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é...
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.
-- Matthieu
Thomas Nemeth
Matthieu Moy a tapoté :
Thomas Nemeth 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é...
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.
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é...
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 :)
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é...
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.
Damien Wyart
* Thomas Nemeth in fr.comp.os.unix:
Pour l'instant, la règle pour (gnu-)make que j'utilise est la suivante :
---8<------------------------------ version.o: FORCE
FORCE: ---8<------------------------------
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é...
Peut-être un fichier annexe servant de "timestamp" et mis à jour avec touch dès qu'un fichier du projet est compilé ? Et ensuite, un prérequis sur ce fichier pour version.o, donc une compilation seulement quand le timestamp est plus récent que version.o. Comme il n'y a pas tout le Makefile, peut-être que je rate quelque chose et que ce système se mordra la queue...
-- DW
* Thomas Nemeth <thomas.nemeth@betatech.invalid> in fr.comp.os.unix:
Pour l'instant, la règle pour (gnu-)make que j'utilise est
la suivante :
---8<------------------------------
version.o: FORCE
FORCE:
---8<------------------------------
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é...
Peut-être un fichier annexe servant de "timestamp" et mis à jour avec
touch dès qu'un fichier du projet est compilé ? Et ensuite, un prérequis
sur ce fichier pour version.o, donc une compilation seulement quand le
timestamp est plus récent que version.o. Comme il n'y a pas tout le
Makefile, peut-être que je rate quelque chose et que ce système se
mordra la queue...
Pour l'instant, la règle pour (gnu-)make que j'utilise est la suivante :
---8<------------------------------ version.o: FORCE
FORCE: ---8<------------------------------
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é...
Peut-être un fichier annexe servant de "timestamp" et mis à jour avec touch dès qu'un fichier du projet est compilé ? Et ensuite, un prérequis sur ce fichier pour version.o, donc une compilation seulement quand le timestamp est plus récent que version.o. Comme il n'y a pas tout le Makefile, peut-être que je rate quelque chose et que ce système se mordra la queue...
-- DW
Matthieu Moy
Thomas Nemeth writes:
D'autre part, version.c existant au préalable, mon makefile a déjà une règle le compilant :