Le Mon, 23 Nov 2009 16:30:40 +0100, Marc Espie a écrit:In article ,
Jean-Marc Bourguet wrote:(Marc Espie) writes:Mais t'as toujours un petit probleme cote info-a-jour: faut faire
tourner
gcc -M pour fabriquer le fichier en question, ce qui se fait avec un
bout
de makefile. Mais une fois que ca a change, ben faut relancer make...
avec
les bonnes dependances.
Si je ne me trompe pas, les dependances sont invalidees exactement dans
les
memes circonstances que le fichier objet -- du moins tant qu'on s'en
tient
a la logique de make de se baser sur les dates.C'est une des multiples limitations de make, gnu-make n'etant pas
mieux que
les autres (etant plutot pire cote documentation qui oublie de dire ce
qui
est specifique a gnu-make, et ce qui est standard).
Il y a quelques tentatives de ci, de la, pour faire mieux, mais rien de
vraiment concluant dans mon experience...
clearmake (mais avec tous les avantages et les inconveniants de
clearcase)
tant qu'on n'a pas de fichier qui peuvent etre mis a jour correctement
de
plusieurs manieres (la gestion historique des templates de Sun CC par
exemple posait probleme).
Revenons quand meme a la question de depart: le posteur initial voulait
un truc
simple, et qui marche... de quelque facon qu'on y regarde, make ne
remplit
pas ce cahier des charges. Deja, c'est pas tres simple, surtout pour du
C++,
mais surtout, si ca reste simple, ca ne marche pas (bien), et si ca ne
reste
pas simple, ca ne marche quand meme pas parfaitement...
Si tu entends par "ça ne marche pas bien", que ça oblige à avoir une façon
d'organiser ses sources qui soit restreinte, ça m'irait parfaitement bien.
Concernant mon organisation, c'est celle d'un débutant que je suis, et qui
me convient pas mal jusqu'ici :
- j'ai une racine, appelont la src/
- quand je fait un include avec des doubles-quotes (#include
"doss1/doss2/mon_fichier.hpp"), il est dans "src/doss1/doss2/"
- si le fichier .hpp dont mon executable dépends a un .cpp (même nom),
alors il faut générer ce .o et l'inclure lors du "linkage" de l'executable
- sur chaque executable à générer, on peut individuellement passer des
paramètres de compilation. Ceci pour indiquer où chercher les entêtes et
les librairies statiques.
Ca n'existe pas ce genre du truc? C'est plus compliqué que je le crois ?
Le Mon, 23 Nov 2009 16:30:40 +0100, Marc Espie <espie@lain.home> a écrit:
In article <pxbiqd1b8ec.fsf@news.bourguet.org>,
Jean-Marc Bourguet <jm@bourguet.org> wrote:
espie@lain.home (Marc Espie) writes:
Mais t'as toujours un petit probleme cote info-a-jour: faut faire
tourner
gcc -M pour fabriquer le fichier en question, ce qui se fait avec un
bout
de makefile. Mais une fois que ca a change, ben faut relancer make...
avec
les bonnes dependances.
Si je ne me trompe pas, les dependances sont invalidees exactement dans
les
memes circonstances que le fichier objet -- du moins tant qu'on s'en
tient
a la logique de make de se baser sur les dates.
C'est une des multiples limitations de make, gnu-make n'etant pas
mieux que
les autres (etant plutot pire cote documentation qui oublie de dire ce
qui
est specifique a gnu-make, et ce qui est standard).
Il y a quelques tentatives de ci, de la, pour faire mieux, mais rien de
vraiment concluant dans mon experience...
clearmake (mais avec tous les avantages et les inconveniants de
clearcase)
tant qu'on n'a pas de fichier qui peuvent etre mis a jour correctement
de
plusieurs manieres (la gestion historique des templates de Sun CC par
exemple posait probleme).
Revenons quand meme a la question de depart: le posteur initial voulait
un truc
simple, et qui marche... de quelque facon qu'on y regarde, make ne
remplit
pas ce cahier des charges. Deja, c'est pas tres simple, surtout pour du
C++,
mais surtout, si ca reste simple, ca ne marche pas (bien), et si ca ne
reste
pas simple, ca ne marche quand meme pas parfaitement...
Si tu entends par "ça ne marche pas bien", que ça oblige à avoir une façon
d'organiser ses sources qui soit restreinte, ça m'irait parfaitement bien.
Concernant mon organisation, c'est celle d'un débutant que je suis, et qui
me convient pas mal jusqu'ici :
- j'ai une racine, appelont la src/
- quand je fait un include avec des doubles-quotes (#include
"doss1/doss2/mon_fichier.hpp"), il est dans "src/doss1/doss2/"
- si le fichier .hpp dont mon executable dépends a un .cpp (même nom),
alors il faut générer ce .o et l'inclure lors du "linkage" de l'executable
- sur chaque executable à générer, on peut individuellement passer des
paramètres de compilation. Ceci pour indiquer où chercher les entêtes et
les librairies statiques.
Ca n'existe pas ce genre du truc? C'est plus compliqué que je le crois ?
Le Mon, 23 Nov 2009 16:30:40 +0100, Marc Espie a écrit:In article ,
Jean-Marc Bourguet wrote:(Marc Espie) writes:Mais t'as toujours un petit probleme cote info-a-jour: faut faire
tourner
gcc -M pour fabriquer le fichier en question, ce qui se fait avec un
bout
de makefile. Mais une fois que ca a change, ben faut relancer make...
avec
les bonnes dependances.
Si je ne me trompe pas, les dependances sont invalidees exactement dans
les
memes circonstances que le fichier objet -- du moins tant qu'on s'en
tient
a la logique de make de se baser sur les dates.C'est une des multiples limitations de make, gnu-make n'etant pas
mieux que
les autres (etant plutot pire cote documentation qui oublie de dire ce
qui
est specifique a gnu-make, et ce qui est standard).
Il y a quelques tentatives de ci, de la, pour faire mieux, mais rien de
vraiment concluant dans mon experience...
clearmake (mais avec tous les avantages et les inconveniants de
clearcase)
tant qu'on n'a pas de fichier qui peuvent etre mis a jour correctement
de
plusieurs manieres (la gestion historique des templates de Sun CC par
exemple posait probleme).
Revenons quand meme a la question de depart: le posteur initial voulait
un truc
simple, et qui marche... de quelque facon qu'on y regarde, make ne
remplit
pas ce cahier des charges. Deja, c'est pas tres simple, surtout pour du
C++,
mais surtout, si ca reste simple, ca ne marche pas (bien), et si ca ne
reste
pas simple, ca ne marche quand meme pas parfaitement...
Si tu entends par "ça ne marche pas bien", que ça oblige à avoir une façon
d'organiser ses sources qui soit restreinte, ça m'irait parfaitement bien.
Concernant mon organisation, c'est celle d'un débutant que je suis, et qui
me convient pas mal jusqu'ici :
- j'ai une racine, appelont la src/
- quand je fait un include avec des doubles-quotes (#include
"doss1/doss2/mon_fichier.hpp"), il est dans "src/doss1/doss2/"
- si le fichier .hpp dont mon executable dépends a un .cpp (même nom),
alors il faut générer ce .o et l'inclure lors du "linkage" de l'executable
- sur chaque executable à générer, on peut individuellement passer des
paramètres de compilation. Ceci pour indiquer où chercher les entêtes et
les librairies statiques.
Ca n'existe pas ce genre du truc? C'est plus compliqué que je le crois ?
In article ,
Jean-Marc Bourguet wrote:
>Fabien LE LEZ writes:
>> On Mon, 23 Nov 2009 01:14:06 -0800 (PST), James Kanze
>> :
>> >C'est tout à fait possible de faire quelque chose du genre
>> >avec GNU make,
>> Comment fait-on, avec make, pour générer automatiquement
>> les dépendances ? Si je ne m'abuse, make tout seul ne sait
>> pas de quels .h un .cpp dépend.
>Tous les compilateurs que j'utilise ont des flags du genre
>-M? de GCC, qui permettent de recuperer l'info. Il suffit
>d'inclure le resultat dans le Makefile (ce qui suppose un
>make qui permet l'inclusion sans erreur si le fichier
>n'existe pas, comme GNU make).
Mais t'as toujours un petit probleme cote info-a-jour: faut
faire tourner gcc -M pour fabriquer le fichier en question, ce
qui se fait avec un bout de makefile. Mais une fois que ca a
change, ben faut relancer make... avec les bonnes dependances.
C'est une des multiples limitations de make, gnu-make n'etant
pas mieux que les autres (etant plutot pire cote documentation
qui oublie de dire ce qui est specifique a gnu-make, et ce qui
est standard).
Il y a quelques tentatives de ci, de la, pour faire mieux,
mais rien de vraiment concluant dans mon experience...
In article <pxbtywlbgav....@news.bourguet.org>,
Jean-Marc Bourguet <j...@bourguet.org> wrote:
>Fabien LE LEZ <grams...@gramster.com> writes:
>> On Mon, 23 Nov 2009 01:14:06 -0800 (PST), James Kanze
>> <james.ka...@gmail.com>:
>> >C'est tout à fait possible de faire quelque chose du genre
>> >avec GNU make,
>> Comment fait-on, avec make, pour générer automatiquement
>> les dépendances ? Si je ne m'abuse, make tout seul ne sait
>> pas de quels .h un .cpp dépend.
>Tous les compilateurs que j'utilise ont des flags du genre
>-M? de GCC, qui permettent de recuperer l'info. Il suffit
>d'inclure le resultat dans le Makefile (ce qui suppose un
>make qui permet l'inclusion sans erreur si le fichier
>n'existe pas, comme GNU make).
Mais t'as toujours un petit probleme cote info-a-jour: faut
faire tourner gcc -M pour fabriquer le fichier en question, ce
qui se fait avec un bout de makefile. Mais une fois que ca a
change, ben faut relancer make... avec les bonnes dependances.
C'est une des multiples limitations de make, gnu-make n'etant
pas mieux que les autres (etant plutot pire cote documentation
qui oublie de dire ce qui est specifique a gnu-make, et ce qui
est standard).
Il y a quelques tentatives de ci, de la, pour faire mieux,
mais rien de vraiment concluant dans mon experience...
In article ,
Jean-Marc Bourguet wrote:
>Fabien LE LEZ writes:
>> On Mon, 23 Nov 2009 01:14:06 -0800 (PST), James Kanze
>> :
>> >C'est tout à fait possible de faire quelque chose du genre
>> >avec GNU make,
>> Comment fait-on, avec make, pour générer automatiquement
>> les dépendances ? Si je ne m'abuse, make tout seul ne sait
>> pas de quels .h un .cpp dépend.
>Tous les compilateurs que j'utilise ont des flags du genre
>-M? de GCC, qui permettent de recuperer l'info. Il suffit
>d'inclure le resultat dans le Makefile (ce qui suppose un
>make qui permet l'inclusion sans erreur si le fichier
>n'existe pas, comme GNU make).
Mais t'as toujours un petit probleme cote info-a-jour: faut
faire tourner gcc -M pour fabriquer le fichier en question, ce
qui se fait avec un bout de makefile. Mais une fois que ca a
change, ben faut relancer make... avec les bonnes dependances.
C'est une des multiples limitations de make, gnu-make n'etant
pas mieux que les autres (etant plutot pire cote documentation
qui oublie de dire ce qui est specifique a gnu-make, et ce qui
est standard).
Il y a quelques tentatives de ci, de la, pour faire mieux,
mais rien de vraiment concluant dans mon experience...
Quel standard ? Autant que je sache, il n'y a pas de norme de
make, et le sous-ensemble commun à tous les make est tellement
petit que d'être inutilisable. Dans l'ensemble, j'ai trouvé la
documentation de GNU make plutôt bon, au moins en ce qui
concerne les plateformes Unix.
Quel standard ? Autant que je sache, il n'y a pas de norme de
make, et le sous-ensemble commun à tous les make est tellement
petit que d'être inutilisable. Dans l'ensemble, j'ai trouvé la
documentation de GNU make plutôt bon, au moins en ce qui
concerne les plateformes Unix.
Quel standard ? Autant que je sache, il n'y a pas de norme de
make, et le sous-ensemble commun à tous les make est tellement
petit que d'être inutilisable. Dans l'ensemble, j'ai trouvé la
documentation de GNU make plutôt bon, au moins en ce qui
concerne les plateformes Unix.
Tu sais mal. Il faudrait te mettre a jour. make fait partie de POSIX, tu
peux par exemple trouver sa documentation dans Single Unix d'opengroup.
Le sous-ensemble commun a tous les make *est* utilisable.
Tu sais mal. Il faudrait te mettre a jour. make fait partie de POSIX, tu
peux par exemple trouver sa documentation dans Single Unix d'opengroup.
Le sous-ensemble commun a tous les make *est* utilisable.
Tu sais mal. Il faudrait te mettre a jour. make fait partie de POSIX, tu
peux par exemple trouver sa documentation dans Single Unix d'opengroup.
Le sous-ensemble commun a tous les make *est* utilisable.
Le Mon, 23 Nov 2009 16:30:40 +0100, Marc Espie a écrit:
Concernant mon organisation, c'est celle d'un débutant que je suis, et qui
me convient pas mal jusqu'ici :
- j'ai une racine, appelont la src/
- quand je fait un include avec des doubles-quotes (#include
"doss1/doss2/mon_fichier.hpp"), il est dans "src/doss1/doss2/"
- si le fichier .hpp dont mon executable dépends a un .cpp (même nom),
alors il faut générer ce .o et l'inclure lors du "linkage" de l'executable
- sur chaque executable à générer, on peut individuellement passer des
paramètres de compilation. Ceci pour indiquer où chercher les entêtes et
les librairies statiques.
Le Mon, 23 Nov 2009 16:30:40 +0100, Marc Espie <espie@lain.home> a écrit:
Concernant mon organisation, c'est celle d'un débutant que je suis, et qui
me convient pas mal jusqu'ici :
- j'ai une racine, appelont la src/
- quand je fait un include avec des doubles-quotes (#include
"doss1/doss2/mon_fichier.hpp"), il est dans "src/doss1/doss2/"
- si le fichier .hpp dont mon executable dépends a un .cpp (même nom),
alors il faut générer ce .o et l'inclure lors du "linkage" de l'executable
- sur chaque executable à générer, on peut individuellement passer des
paramètres de compilation. Ceci pour indiquer où chercher les entêtes et
les librairies statiques.
Le Mon, 23 Nov 2009 16:30:40 +0100, Marc Espie a écrit:
Concernant mon organisation, c'est celle d'un débutant que je suis, et qui
me convient pas mal jusqu'ici :
- j'ai une racine, appelont la src/
- quand je fait un include avec des doubles-quotes (#include
"doss1/doss2/mon_fichier.hpp"), il est dans "src/doss1/doss2/"
- si le fichier .hpp dont mon executable dépends a un .cpp (même nom),
alors il faut générer ce .o et l'inclure lors du "linkage" de l'executable
- sur chaque executable à générer, on peut individuellement passer des
paramètres de compilation. Ceci pour indiquer où chercher les entêtes et
les librairies statiques.
Le 23/11/2009 12:58, Fabien LE LEZ a écrit :
> On Mon, 23 Nov 2009 01:14:06 -0800 (PST), James Kanze
> :
>
>> C'est tout à fait possible de faire quelque chose du genre avec GNU
>> make,
>
> Comment fait-on, avec make, pour générer automatiquement les
> dépendances ? Si je ne m'abuse, make tout seul ne sait pas de quels .h
> un .cpp dépend.
Non, en effet. Il faut utiliser l'option -MM du préprocesseur de gcc.
Mais
c'est facile d'inclure la commande dans le Makefile :
Par exemple :
#-----8<-----------------------------
depend:
gcc -MM *.cpp > dependencies.mk
# DEPENDANCES
-include dependencies.mk
#-----8<-----------------------------
et un "make depend" génère les dépendances.
Je refais automatiquement la dependance avec l'objet. Ca evite de devoir
se poser des questions quand a la necessite de faire un make depend.
Donc
pour gcc
CXXFLAGS=-MMD
-include $(OBJECTS:.o=.d)
pour les compilateurs sans equivalent de -MMD, c'est
-include $(OBJECTS:.o=.d)
.cpp.o:
$(CXX) -MM $(CFLAGS) $< > $(@:.o=.d)
$(CXX) -c $(CFLAGS) $(CXXFLAGS) -o $@ $<
(La seule chose a laquelle il faut faire attention, c'est introduire
explicitement les dependances sur les fichiers generes pour eviter que la
compil d'un fichier foire parce qu'un fichier genere n'est pas fait).
A+
Le 23/11/2009 12:58, Fabien LE LEZ a écrit :
> On Mon, 23 Nov 2009 01:14:06 -0800 (PST), James Kanze
> <james.kanze@gmail.com>:
>
>> C'est tout à fait possible de faire quelque chose du genre avec GNU
>> make,
>
> Comment fait-on, avec make, pour générer automatiquement les
> dépendances ? Si je ne m'abuse, make tout seul ne sait pas de quels .h
> un .cpp dépend.
Non, en effet. Il faut utiliser l'option -MM du préprocesseur de gcc.
Mais
c'est facile d'inclure la commande dans le Makefile :
Par exemple :
#-----8<-----------------------------
depend:
gcc -MM *.cpp > dependencies.mk
# DEPENDANCES
-include dependencies.mk
#-----8<-----------------------------
et un "make depend" génère les dépendances.
Je refais automatiquement la dependance avec l'objet. Ca evite de devoir
se poser des questions quand a la necessite de faire un make depend.
Donc
pour gcc
CXXFLAGS=-MMD
-include $(OBJECTS:.o=.d)
pour les compilateurs sans equivalent de -MMD, c'est
-include $(OBJECTS:.o=.d)
.cpp.o:
$(CXX) -MM $(CFLAGS) $< > $(@:.o=.d)
$(CXX) -c $(CFLAGS) $(CXXFLAGS) -o $@ $<
(La seule chose a laquelle il faut faire attention, c'est introduire
explicitement les dependances sur les fichiers generes pour eviter que la
compil d'un fichier foire parce qu'un fichier genere n'est pas fait).
A+
Le 23/11/2009 12:58, Fabien LE LEZ a écrit :
> On Mon, 23 Nov 2009 01:14:06 -0800 (PST), James Kanze
> :
>
>> C'est tout à fait possible de faire quelque chose du genre avec GNU
>> make,
>
> Comment fait-on, avec make, pour générer automatiquement les
> dépendances ? Si je ne m'abuse, make tout seul ne sait pas de quels .h
> un .cpp dépend.
Non, en effet. Il faut utiliser l'option -MM du préprocesseur de gcc.
Mais
c'est facile d'inclure la commande dans le Makefile :
Par exemple :
#-----8<-----------------------------
depend:
gcc -MM *.cpp > dependencies.mk
# DEPENDANCES
-include dependencies.mk
#-----8<-----------------------------
et un "make depend" génère les dépendances.
Je refais automatiquement la dependance avec l'objet. Ca evite de devoir
se poser des questions quand a la necessite de faire un make depend.
Donc
pour gcc
CXXFLAGS=-MMD
-include $(OBJECTS:.o=.d)
pour les compilateurs sans equivalent de -MMD, c'est
-include $(OBJECTS:.o=.d)
.cpp.o:
$(CXX) -MM $(CFLAGS) $< > $(@:.o=.d)
$(CXX) -c $(CFLAGS) $(CXXFLAGS) -o $@ $<
(La seule chose a laquelle il faut faire attention, c'est introduire
explicitement les dependances sur les fichiers generes pour eviter que la
compil d'un fichier foire parce qu'un fichier genere n'est pas fait).
A+
In article
,
James Kanze wrote:
>Quel standard ? Autant que je sache, il n'y a pas de norme de
>make, et le sous-ensemble commun à tous les make est
>tellement petit que d'être inutilisable. Dans l'ensemble,
>j'ai trouvé la documentation de GNU make plutôt bon, au moins
>en ce qui concerne les plateformes Unix.
Tu sais mal. Il faudrait te mettre a jour. make fait partie de
POSIX, tu peux par exemple trouver sa documentation dans
Single Unix d'opengroup.
Le sous-ensemble commun a tous les make *est* utilisable. Tu y
trouves les variables, y compris les variables magiques telles
que $@, les dependances, les suffix rules.
Meme des fonctionnalites sympathiques telles que
make VAR=value
(qui override la valeur specifiee dans le Makefile) sont
normalises.
C'est parfaitement possible de faire des choses tres
raisonnables avec (d'ailleurs une proportion non negligeable
de logiciels savent compiler avec plusieurs make).
... mais le fait que tu ne saches pas qu'il y a une norme, et
quelles sont les extensions supportees par tel ou tel make
montre qu'il y a un souci dans la doc de gnu-make...
In article
<5feeab02-8103-47e4-9a1f-095c0a4fd...@x15g2000vbr.googlegroups.com>,
James Kanze <james.ka...@gmail.com> wrote:
>Quel standard ? Autant que je sache, il n'y a pas de norme de
>make, et le sous-ensemble commun à tous les make est
>tellement petit que d'être inutilisable. Dans l'ensemble,
>j'ai trouvé la documentation de GNU make plutôt bon, au moins
>en ce qui concerne les plateformes Unix.
Tu sais mal. Il faudrait te mettre a jour. make fait partie de
POSIX, tu peux par exemple trouver sa documentation dans
Single Unix d'opengroup.
Le sous-ensemble commun a tous les make *est* utilisable. Tu y
trouves les variables, y compris les variables magiques telles
que $@, les dependances, les suffix rules.
Meme des fonctionnalites sympathiques telles que
make VAR=value
(qui override la valeur specifiee dans le Makefile) sont
normalises.
C'est parfaitement possible de faire des choses tres
raisonnables avec (d'ailleurs une proportion non negligeable
de logiciels savent compiler avec plusieurs make).
... mais le fait que tu ne saches pas qu'il y a une norme, et
quelles sont les extensions supportees par tel ou tel make
montre qu'il y a un souci dans la doc de gnu-make...
In article
,
James Kanze wrote:
>Quel standard ? Autant que je sache, il n'y a pas de norme de
>make, et le sous-ensemble commun à tous les make est
>tellement petit que d'être inutilisable. Dans l'ensemble,
>j'ai trouvé la documentation de GNU make plutôt bon, au moins
>en ce qui concerne les plateformes Unix.
Tu sais mal. Il faudrait te mettre a jour. make fait partie de
POSIX, tu peux par exemple trouver sa documentation dans
Single Unix d'opengroup.
Le sous-ensemble commun a tous les make *est* utilisable. Tu y
trouves les variables, y compris les variables magiques telles
que $@, les dependances, les suffix rules.
Meme des fonctionnalites sympathiques telles que
make VAR=value
(qui override la valeur specifiee dans le Makefile) sont
normalises.
C'est parfaitement possible de faire des choses tres
raisonnables avec (d'ailleurs une proportion non negligeable
de logiciels savent compiler avec plusieurs make).
... mais le fait que tu ne saches pas qu'il y a une norme, et
quelles sont les extensions supportees par tel ou tel make
montre qu'il y a un souci dans la doc de gnu-make...
(Marc Espie) writes:
> Tu sais mal. Il faudrait te mettre a jour. make fait partie
> de POSIX, tu peux par exemple trouver sa documentation dans
> Single Unix d'opengroup.
> Le sous-ensemble commun a tous les make *est* utilisable.
Desole, de mon point de vue, l'absence d'include le rend
inutilisable sans generation (semi-)automatique des Makefiles
eux-memes.
es...@lain.home (Marc Espie) writes:
> Tu sais mal. Il faudrait te mettre a jour. make fait partie
> de POSIX, tu peux par exemple trouver sa documentation dans
> Single Unix d'opengroup.
> Le sous-ensemble commun a tous les make *est* utilisable.
Desole, de mon point de vue, l'absence d'include le rend
inutilisable sans generation (semi-)automatique des Makefiles
eux-memes.
(Marc Espie) writes:
> Tu sais mal. Il faudrait te mettre a jour. make fait partie
> de POSIX, tu peux par exemple trouver sa documentation dans
> Single Unix d'opengroup.
> Le sous-ensemble commun a tous les make *est* utilisable.
Desole, de mon point de vue, l'absence d'include le rend
inutilisable sans generation (semi-)automatique des Makefiles
eux-memes.
J'ajoute ça comme défaut dans la documentation, oui. Qu'il n'y a
pas de référence à la norme (sauf, je viens de voir, dans
l'introduction), et pas d'indication ce qui est extension, et ce
qui ne l'est pas. (Il y a bien des passages où la documentation
par « d'autres make ». Mais ils sont en général assez vagues, et
ce n'est jamais clair quels autres make.)
De l'autre côté, on peut considérer GNU make quelque chose de
différent de Posix make : il peut exécuter les fichiers Posix
make, mais un peu comme F# peut exécuter du OCaml : sans
prétendre à être un Posix make pûr et dur. Alors, si tu veux
écrire GNU make, tu lis le manuel de GNU make, et si tu veux
écrire du Posix make, tu lis la norme Posix.
J'ajoute ça comme défaut dans la documentation, oui. Qu'il n'y a
pas de référence à la norme (sauf, je viens de voir, dans
l'introduction), et pas d'indication ce qui est extension, et ce
qui ne l'est pas. (Il y a bien des passages où la documentation
par « d'autres make ». Mais ils sont en général assez vagues, et
ce n'est jamais clair quels autres make.)
De l'autre côté, on peut considérer GNU make quelque chose de
différent de Posix make : il peut exécuter les fichiers Posix
make, mais un peu comme F# peut exécuter du OCaml : sans
prétendre à être un Posix make pûr et dur. Alors, si tu veux
écrire GNU make, tu lis le manuel de GNU make, et si tu veux
écrire du Posix make, tu lis la norme Posix.
J'ajoute ça comme défaut dans la documentation, oui. Qu'il n'y a
pas de référence à la norme (sauf, je viens de voir, dans
l'introduction), et pas d'indication ce qui est extension, et ce
qui ne l'est pas. (Il y a bien des passages où la documentation
par « d'autres make ». Mais ils sont en général assez vagues, et
ce n'est jamais clair quels autres make.)
De l'autre côté, on peut considérer GNU make quelque chose de
différent de Posix make : il peut exécuter les fichiers Posix
make, mais un peu comme F# peut exécuter du OCaml : sans
prétendre à être un Posix make pûr et dur. Alors, si tu veux
écrire GNU make, tu lis le manuel de GNU make, et si tu veux
écrire du Posix make, tu lis la norme Posix.
On Nov 24, 10:32 am, Jean-Marc Bourguet wrote:(Marc Espie) writes:
> Tu sais mal. Il faudrait te mettre a jour. make fait partie
> de POSIX, tu peux par exemple trouver sa documentation dans
> Single Unix d'opengroup.> Le sous-ensemble commun a tous les make *est* utilisable.Desole, de mon point de vue, l'absence d'include le rend
inutilisable sans generation (semi-)automatique des Makefiles
eux-memes.
Et l'absense des conditionnels rend son utilisation difficile
dans des environements multi-plateforme. (Bien que je suppose
qu'avec include, on pourrait implémenter certains conditionnels
en utilisant un macro dans le nom d'un fichier qu'on inclut.)
On Nov 24, 10:32 am, Jean-Marc Bourguet <j...@bourguet.org> wrote:
es...@lain.home (Marc Espie) writes:
> Tu sais mal. Il faudrait te mettre a jour. make fait partie
> de POSIX, tu peux par exemple trouver sa documentation dans
> Single Unix d'opengroup.
> Le sous-ensemble commun a tous les make *est* utilisable.
Desole, de mon point de vue, l'absence d'include le rend
inutilisable sans generation (semi-)automatique des Makefiles
eux-memes.
Et l'absense des conditionnels rend son utilisation difficile
dans des environements multi-plateforme. (Bien que je suppose
qu'avec include, on pourrait implémenter certains conditionnels
en utilisant un macro dans le nom d'un fichier qu'on inclut.)
On Nov 24, 10:32 am, Jean-Marc Bourguet wrote:(Marc Espie) writes:
> Tu sais mal. Il faudrait te mettre a jour. make fait partie
> de POSIX, tu peux par exemple trouver sa documentation dans
> Single Unix d'opengroup.> Le sous-ensemble commun a tous les make *est* utilisable.Desole, de mon point de vue, l'absence d'include le rend
inutilisable sans generation (semi-)automatique des Makefiles
eux-memes.
Et l'absense des conditionnels rend son utilisation difficile
dans des environements multi-plateforme. (Bien que je suppose
qu'avec include, on pourrait implémenter certains conditionnels
en utilisant un macro dans le nom d'un fichier qu'on inclut.)