La côté négative, au moins en ce qui me concerne, c'est que
c'est un langage fonctionnelle, ce dont je n'ai absoluement pas
l'habitude. (Qu'est-ce que j'en étais fier quand j'ai réussi à
faire marcher ma première boucle :
multiPatSubst = $(if $(1),$(patsubst $(firstword $(1)),$(2),$(call
multiPatSubst,$(wordlist 2,1000,$(1)),$(2),$(3))),$(3))
Quelque chose qui pour moi est trivial en C++, mais il m'a fallu
un certain temps pour le faire marcher en make.)
La côté négative, au moins en ce qui me concerne, c'est que
c'est un langage fonctionnelle, ce dont je n'ai absoluement pas
l'habitude. (Qu'est-ce que j'en étais fier quand j'ai réussi à
faire marcher ma première boucle :
multiPatSubst = $(if $(1),$(patsubst $(firstword $(1)),$(2),$(call
multiPatSubst,$(wordlist 2,1000,$(1)),$(2),$(3))),$(3))
Quelque chose qui pour moi est trivial en C++, mais il m'a fallu
un certain temps pour le faire marcher en make.)
La côté négative, au moins en ce qui me concerne, c'est que
c'est un langage fonctionnelle, ce dont je n'ai absoluement pas
l'habitude. (Qu'est-ce que j'en étais fier quand j'ai réussi à
faire marcher ma première boucle :
multiPatSubst = $(if $(1),$(patsubst $(firstword $(1)),$(2),$(call
multiPatSubst,$(wordlist 2,1000,$(1)),$(2),$(3))),$(3))
Quelque chose qui pour moi est trivial en C++, mais il m'a fallu
un certain temps pour le faire marcher en make.)
Je commence à m'intéresser à Boost. Mieux vaut tard que jamais :-)
Du coup je découvre aussi Boost.build.
Alors, en espérant ne pas être trop hors sujet et en espérant ne pas
lancer un troll non plus, je voudrais savoir si tous les expérimentés
de la construction de projets C++ que vous êtes, pensez que
Boost.build est une bonne alternative à make ou bien est-ce que vous
préférez restez avec ce bon vieux make ?
Je commence à m'intéresser à Boost. Mieux vaut tard que jamais :-)
Du coup je découvre aussi Boost.build.
Alors, en espérant ne pas être trop hors sujet et en espérant ne pas
lancer un troll non plus, je voudrais savoir si tous les expérimentés
de la construction de projets C++ que vous êtes, pensez que
Boost.build est une bonne alternative à make ou bien est-ce que vous
préférez restez avec ce bon vieux make ?
Je commence à m'intéresser à Boost. Mieux vaut tard que jamais :-)
Du coup je découvre aussi Boost.build.
Alors, en espérant ne pas être trop hors sujet et en espérant ne pas
lancer un troll non plus, je voudrais savoir si tous les expérimentés
de la construction de projets C++ que vous êtes, pensez que
Boost.build est une bonne alternative à make ou bien est-ce que vous
préférez restez avec ce bon vieux make ?
Peut-être est-il utile de préciser que Boost.build se base sur l'outil
«jam», développé par Perforce, puis sur FTJam, je crois -- Boost.Jam
étant compatible avec jam de Perforce.
Je me demande s'il n'est pas un peu rude de passer directement à
Boost.Jam sans passer par ses ancêtres.
Personnellement, je suis parti
du Jam originelle. La documentation qui se trouve sur cette page :
http://www.perforce.com/jam/jam.html est plutôt bonne -- lire en
particulier Jam.html, Jambase.html, Jamfile.html, Getting Started with
Jam - A Tutorial --
Ses principaux points forts, AMHA :
-- jam gère tout seul Les dépendances des includes; pas besoin de
demander de l'aide au compilateur via -MM -MD -MT ou du
genre... (il se débrouille aussi avec les dépendances de templates
exporté, mais je crois qu'icc fait tout le boulot)
-- jam est rapide pour construire un gros projet, il fabrique son
arbre de dépendance dès le départ, puis ne travaille plus du tout,
à la différence de la récursivité légendaire de make. Sur le
projet sur lequel je travaille, l'impact a été énorme.
C'est qui déjà ? :-)
Peut-être est-il utile de préciser que Boost.build se base sur l'outil
«jam», développé par Perforce, puis sur FTJam, je crois -- Boost.Jam
étant compatible avec jam de Perforce.
Je me demande s'il n'est pas un peu rude de passer directement à
Boost.Jam sans passer par ses ancêtres.
Personnellement, je suis parti
du Jam originelle. La documentation qui se trouve sur cette page :
http://www.perforce.com/jam/jam.html est plutôt bonne -- lire en
particulier Jam.html, Jambase.html, Jamfile.html, Getting Started with
Jam - A Tutorial --
Ses principaux points forts, AMHA :
-- jam gère tout seul Les dépendances des includes; pas besoin de
demander de l'aide au compilateur via -MM -MD -MT ou du
genre... (il se débrouille aussi avec les dépendances de templates
exporté, mais je crois qu'icc fait tout le boulot)
-- jam est rapide pour construire un gros projet, il fabrique son
arbre de dépendance dès le départ, puis ne travaille plus du tout,
à la différence de la récursivité légendaire de make. Sur le
projet sur lequel je travaille, l'impact a été énorme.
C'est qui déjà ? :-)
Peut-être est-il utile de préciser que Boost.build se base sur l'outil
«jam», développé par Perforce, puis sur FTJam, je crois -- Boost.Jam
étant compatible avec jam de Perforce.
Je me demande s'il n'est pas un peu rude de passer directement à
Boost.Jam sans passer par ses ancêtres.
Personnellement, je suis parti
du Jam originelle. La documentation qui se trouve sur cette page :
http://www.perforce.com/jam/jam.html est plutôt bonne -- lire en
particulier Jam.html, Jambase.html, Jamfile.html, Getting Started with
Jam - A Tutorial --
Ses principaux points forts, AMHA :
-- jam gère tout seul Les dépendances des includes; pas besoin de
demander de l'aide au compilateur via -MM -MD -MT ou du
genre... (il se débrouille aussi avec les dépendances de templates
exporté, mais je crois qu'icc fait tout le boulot)
-- jam est rapide pour construire un gros projet, il fabrique son
arbre de dépendance dès le départ, puis ne travaille plus du tout,
à la différence de la récursivité légendaire de make. Sur le
projet sur lequel je travaille, l'impact a été énorme.
C'est qui déjà ? :-)
La côté négative, au moins en ce qui me concerne, c'est que
c'est un langage fonctionnelle, ce dont je n'ai absoluement pas
l'habitude.
Moi j'aime bien les langages fonctionnels.(Qu'est-ce que j'en étais fier quand j'ai réussi à
faire marcher ma première boucle :
LOL.
Ca me rappelle comme j'étais fier quand j'ai écrit mes
premières lignes de Haskell ;)
multiPatSubst = $(if $(1),$(patsubst $(firstword $(1)),$(2),$(call
multiPatSubst,$(wordlist 2,1000,$(1)),$(2),$(3))),$(3))
Heu oui, bon, on dirait qu'on a là une fonction récursive.
Mais ce qu'on ne dirait pas c'est que la syntaxe soit très
élégante non plus.
La côté négative, au moins en ce qui me concerne, c'est que
c'est un langage fonctionnelle, ce dont je n'ai absoluement pas
l'habitude.
Moi j'aime bien les langages fonctionnels.
(Qu'est-ce que j'en étais fier quand j'ai réussi à
faire marcher ma première boucle :
LOL.
Ca me rappelle comme j'étais fier quand j'ai écrit mes
premières lignes de Haskell ;)
multiPatSubst = $(if $(1),$(patsubst $(firstword $(1)),$(2),$(call
multiPatSubst,$(wordlist 2,1000,$(1)),$(2),$(3))),$(3))
Heu oui, bon, on dirait qu'on a là une fonction récursive.
Mais ce qu'on ne dirait pas c'est que la syntaxe soit très
élégante non plus.
La côté négative, au moins en ce qui me concerne, c'est que
c'est un langage fonctionnelle, ce dont je n'ai absoluement pas
l'habitude.
Moi j'aime bien les langages fonctionnels.(Qu'est-ce que j'en étais fier quand j'ai réussi à
faire marcher ma première boucle :
LOL.
Ca me rappelle comme j'étais fier quand j'ai écrit mes
premières lignes de Haskell ;)
multiPatSubst = $(if $(1),$(patsubst $(firstword $(1)),$(2),$(call
multiPatSubst,$(wordlist 2,1000,$(1)),$(2),$(3))),$(3))
Heu oui, bon, on dirait qu'on a là une fonction récursive.
Mais ce qu'on ne dirait pas c'est que la syntaxe soit très
élégante non plus.
"kanze" writes:La côté négative, au moins en ce qui me concerne, c'est que
c'est un langage fonctionnelle, ce dont je n'ai absoluement pas
l'habitude. (Qu'est-ce que j'en étais fier quand j'ai réussi à
faire marcher ma première boucle :
multiPatSubst = $(if $(1),$(patsubst $(firstword $(1)),$(2),$(call
multiPatSubst,$(wordlist 2,1000,$(1)),$(2),$(3))),$(3))
Quelque chose qui pour moi est trivial en C++, mais il m'a fallu
un certain temps pour le faire marcher en make.)
Ce qui me gène, c'est que c'est un langage de macro... avec
les problèmes habituels de savoir quand les macros sont
substituées, la nécessité de faire des $(eval...) pour avoir
une passe supplémentaire,...
"kanze" <kanze@gabi-soft.fr> writes:
La côté négative, au moins en ce qui me concerne, c'est que
c'est un langage fonctionnelle, ce dont je n'ai absoluement pas
l'habitude. (Qu'est-ce que j'en étais fier quand j'ai réussi à
faire marcher ma première boucle :
multiPatSubst = $(if $(1),$(patsubst $(firstword $(1)),$(2),$(call
multiPatSubst,$(wordlist 2,1000,$(1)),$(2),$(3))),$(3))
Quelque chose qui pour moi est trivial en C++, mais il m'a fallu
un certain temps pour le faire marcher en make.)
Ce qui me gène, c'est que c'est un langage de macro... avec
les problèmes habituels de savoir quand les macros sont
substituées, la nécessité de faire des $(eval...) pour avoir
une passe supplémentaire,...
"kanze" writes:La côté négative, au moins en ce qui me concerne, c'est que
c'est un langage fonctionnelle, ce dont je n'ai absoluement pas
l'habitude. (Qu'est-ce que j'en étais fier quand j'ai réussi à
faire marcher ma première boucle :
multiPatSubst = $(if $(1),$(patsubst $(firstword $(1)),$(2),$(call
multiPatSubst,$(wordlist 2,1000,$(1)),$(2),$(3))),$(3))
Quelque chose qui pour moi est trivial en C++, mais il m'a fallu
un certain temps pour le faire marcher en make.)
Ce qui me gène, c'est que c'est un langage de macro... avec
les problèmes habituels de savoir quand les macros sont
substituées, la nécessité de faire des $(eval...) pour avoir
une passe supplémentaire,...
Jean-Marc Bourguet wrote:"kanze" writes:La côté négative, au moins en ce qui me concerne, c'est que
c'est un langage fonctionnelle, ce dont je n'ai absoluement pas
l'habitude. (Qu'est-ce que j'en étais fier quand j'ai réussi à
faire marcher ma première boucle :
multiPatSubst = $(if $(1),$(patsubst $(firstword $(1)),$(2),$(call
multiPatSubst,$(wordlist 2,1000,$(1)),$(2),$(3))),$(3))
Quelque chose qui pour moi est trivial en C++, mais il m'a fallu
un certain temps pour le faire marcher en make.)
Ce qui me gène, c'est que c'est un langage de macro... avec
les problèmes habituels de savoir quand les macros sont
substituées, la nécessité de faire des $(eval...) pour avoir
une passe supplémentaire,...
Sans parler du problème à savoir combien de fois il faut
redoubler les $ pour qu'ils soient évalués au bon moment,
ni des deux types d'affectation:-).
Il a d'une part tous les problèmes d'un langage qui s'est
développé de façon ad hoc, un feature à la fois (problème qu'on
connaît bien du C++ -- mais le point du départ était encore
bien pire que le C), auquel on ajoute des problèmes associés à
un langage où le programme, les données qu'il manipule, et le
résultat ne sont pas proprement séparés : c'est, je crois, ce
que tu veux dire par « langage de macro », mais le problème
est à mon avis plus général, et touche aussi des langages du
genre TeX ou... le méta-langage des templates en C++.
Si on reflechit le problème qu'on veut resoudre avec lui en
termes de programme, en revanche, on trouve que c'est en général
un programme très, très simple. On y arrive donc, malgré les
faiblesses du langage. Mais c'est vrai qu'une solution à partir
des scripts de shell, qui génèrent chaque fois un fichier de
make très simple, serait peut-être plus simple. J'avoue que je
n'y avais pas pensé -- mon système de build est aussi le
résultat d'une accrétion graduelle, à partir d'un fichier de
make tout à fait classique au départ. Même la réécriture que je
suis en train de finir à commencer comme un simple coup de
balai ; après tant d'accrétions, je sentais le besoin d'un coup
de balai.
Jean-Marc Bourguet wrote:
"kanze" <kanze@gabi-soft.fr> writes:
La côté négative, au moins en ce qui me concerne, c'est que
c'est un langage fonctionnelle, ce dont je n'ai absoluement pas
l'habitude. (Qu'est-ce que j'en étais fier quand j'ai réussi à
faire marcher ma première boucle :
multiPatSubst = $(if $(1),$(patsubst $(firstword $(1)),$(2),$(call
multiPatSubst,$(wordlist 2,1000,$(1)),$(2),$(3))),$(3))
Quelque chose qui pour moi est trivial en C++, mais il m'a fallu
un certain temps pour le faire marcher en make.)
Ce qui me gène, c'est que c'est un langage de macro... avec
les problèmes habituels de savoir quand les macros sont
substituées, la nécessité de faire des $(eval...) pour avoir
une passe supplémentaire,...
Sans parler du problème à savoir combien de fois il faut
redoubler les $ pour qu'ils soient évalués au bon moment,
ni des deux types d'affectation:-).
Il a d'une part tous les problèmes d'un langage qui s'est
développé de façon ad hoc, un feature à la fois (problème qu'on
connaît bien du C++ -- mais le point du départ était encore
bien pire que le C), auquel on ajoute des problèmes associés à
un langage où le programme, les données qu'il manipule, et le
résultat ne sont pas proprement séparés : c'est, je crois, ce
que tu veux dire par « langage de macro », mais le problème
est à mon avis plus général, et touche aussi des langages du
genre TeX ou... le méta-langage des templates en C++.
Si on reflechit le problème qu'on veut resoudre avec lui en
termes de programme, en revanche, on trouve que c'est en général
un programme très, très simple. On y arrive donc, malgré les
faiblesses du langage. Mais c'est vrai qu'une solution à partir
des scripts de shell, qui génèrent chaque fois un fichier de
make très simple, serait peut-être plus simple. J'avoue que je
n'y avais pas pensé -- mon système de build est aussi le
résultat d'une accrétion graduelle, à partir d'un fichier de
make tout à fait classique au départ. Même la réécriture que je
suis en train de finir à commencer comme un simple coup de
balai ; après tant d'accrétions, je sentais le besoin d'un coup
de balai.
Jean-Marc Bourguet wrote:"kanze" writes:La côté négative, au moins en ce qui me concerne, c'est que
c'est un langage fonctionnelle, ce dont je n'ai absoluement pas
l'habitude. (Qu'est-ce que j'en étais fier quand j'ai réussi à
faire marcher ma première boucle :
multiPatSubst = $(if $(1),$(patsubst $(firstword $(1)),$(2),$(call
multiPatSubst,$(wordlist 2,1000,$(1)),$(2),$(3))),$(3))
Quelque chose qui pour moi est trivial en C++, mais il m'a fallu
un certain temps pour le faire marcher en make.)
Ce qui me gène, c'est que c'est un langage de macro... avec
les problèmes habituels de savoir quand les macros sont
substituées, la nécessité de faire des $(eval...) pour avoir
une passe supplémentaire,...
Sans parler du problème à savoir combien de fois il faut
redoubler les $ pour qu'ils soient évalués au bon moment,
ni des deux types d'affectation:-).
Il a d'une part tous les problèmes d'un langage qui s'est
développé de façon ad hoc, un feature à la fois (problème qu'on
connaît bien du C++ -- mais le point du départ était encore
bien pire que le C), auquel on ajoute des problèmes associés à
un langage où le programme, les données qu'il manipule, et le
résultat ne sont pas proprement séparés : c'est, je crois, ce
que tu veux dire par « langage de macro », mais le problème
est à mon avis plus général, et touche aussi des langages du
genre TeX ou... le méta-langage des templates en C++.
Si on reflechit le problème qu'on veut resoudre avec lui en
termes de programme, en revanche, on trouve que c'est en général
un programme très, très simple. On y arrive donc, malgré les
faiblesses du langage. Mais c'est vrai qu'une solution à partir
des scripts de shell, qui génèrent chaque fois un fichier de
make très simple, serait peut-être plus simple. J'avoue que je
n'y avais pas pensé -- mon système de build est aussi le
résultat d'une accrétion graduelle, à partir d'un fichier de
make tout à fait classique au départ. Même la réécriture que je
suis en train de finir à commencer comme un simple coup de
balai ; après tant d'accrétions, je sentais le besoin d'un coup
de balai.
"kanze" writes:
Sans parler du problème à savoir combien de fois il faut
redoubler les $ pour qu'ils soient évalués au bon moment,
Là on a un problème supplémentaire: il y a deux programmes
utilisent $: make et le shell, et le code le second est généré
par le premier.
ni des deux types d'affectation:-).
Il a d'une part tous les problèmes d'un langage qui s'est
développé de façon ad hoc, un feature à la fois (problème qu' on
connaît bien du C++ -- mais le point du départ était encore
bien pire que le C), auquel on ajoute des problèmes associés à
un langage où le programme, les données qu'il manipule, et le
résultat ne sont pas proprement séparés : c'est, je crois, ce
que tu veux dire par « langage de macro », mais le problème
est à mon avis plus général, et touche aussi des langages du
genre TeX ou... le méta-langage des templates en C++.
Par langage de macro, j'entendais un langage défini par
substitution textuelle sans considération pour les autres
structures syntaxiques présentes. C'est effectivement le cas
de TeX, mais pas celui des templates en C++.Si on reflechit le problème qu'on veut resoudre avec lui en
termes de programme, en revanche, on trouve que c'est en général
un programme très, très simple. On y arrive donc, malgré les
faiblesses du langage. Mais c'est vrai qu'une solution à partir
des scripts de shell, qui génèrent chaque fois un fichier de
make très simple, serait peut-être plus simple. J'avoue que je
n'y avais pas pensé -- mon système de build est aussi le
résultat d'une accrétion graduelle, à partir d'un fichier de
make tout à fait classique au départ. Même la réécriture que je
suis en train de finir à commencer comme un simple coup de
balai ; après tant d'accrétions, je sentais le besoin d'un coup
de balai.
Je ne suis pas sûr que la génération de makefile m'enchante.
En tout cas, je n'aime pas beaucoup les deux tentatives que je
connais (imake et automake).
"kanze" <kanze@gabi-soft.fr> writes:
Sans parler du problème à savoir combien de fois il faut
redoubler les $ pour qu'ils soient évalués au bon moment,
Là on a un problème supplémentaire: il y a deux programmes
utilisent $: make et le shell, et le code le second est généré
par le premier.
ni des deux types d'affectation:-).
Il a d'une part tous les problèmes d'un langage qui s'est
développé de façon ad hoc, un feature à la fois (problème qu' on
connaît bien du C++ -- mais le point du départ était encore
bien pire que le C), auquel on ajoute des problèmes associés à
un langage où le programme, les données qu'il manipule, et le
résultat ne sont pas proprement séparés : c'est, je crois, ce
que tu veux dire par « langage de macro », mais le problème
est à mon avis plus général, et touche aussi des langages du
genre TeX ou... le méta-langage des templates en C++.
Par langage de macro, j'entendais un langage défini par
substitution textuelle sans considération pour les autres
structures syntaxiques présentes. C'est effectivement le cas
de TeX, mais pas celui des templates en C++.
Si on reflechit le problème qu'on veut resoudre avec lui en
termes de programme, en revanche, on trouve que c'est en général
un programme très, très simple. On y arrive donc, malgré les
faiblesses du langage. Mais c'est vrai qu'une solution à partir
des scripts de shell, qui génèrent chaque fois un fichier de
make très simple, serait peut-être plus simple. J'avoue que je
n'y avais pas pensé -- mon système de build est aussi le
résultat d'une accrétion graduelle, à partir d'un fichier de
make tout à fait classique au départ. Même la réécriture que je
suis en train de finir à commencer comme un simple coup de
balai ; après tant d'accrétions, je sentais le besoin d'un coup
de balai.
Je ne suis pas sûr que la génération de makefile m'enchante.
En tout cas, je n'aime pas beaucoup les deux tentatives que je
connais (imake et automake).
"kanze" writes:
Sans parler du problème à savoir combien de fois il faut
redoubler les $ pour qu'ils soient évalués au bon moment,
Là on a un problème supplémentaire: il y a deux programmes
utilisent $: make et le shell, et le code le second est généré
par le premier.
ni des deux types d'affectation:-).
Il a d'une part tous les problèmes d'un langage qui s'est
développé de façon ad hoc, un feature à la fois (problème qu' on
connaît bien du C++ -- mais le point du départ était encore
bien pire que le C), auquel on ajoute des problèmes associés à
un langage où le programme, les données qu'il manipule, et le
résultat ne sont pas proprement séparés : c'est, je crois, ce
que tu veux dire par « langage de macro », mais le problème
est à mon avis plus général, et touche aussi des langages du
genre TeX ou... le méta-langage des templates en C++.
Par langage de macro, j'entendais un langage défini par
substitution textuelle sans considération pour les autres
structures syntaxiques présentes. C'est effectivement le cas
de TeX, mais pas celui des templates en C++.Si on reflechit le problème qu'on veut resoudre avec lui en
termes de programme, en revanche, on trouve que c'est en général
un programme très, très simple. On y arrive donc, malgré les
faiblesses du langage. Mais c'est vrai qu'une solution à partir
des scripts de shell, qui génèrent chaque fois un fichier de
make très simple, serait peut-être plus simple. J'avoue que je
n'y avais pas pensé -- mon système de build est aussi le
résultat d'une accrétion graduelle, à partir d'un fichier de
make tout à fait classique au départ. Même la réécriture que je
suis en train de finir à commencer comme un simple coup de
balai ; après tant d'accrétions, je sentais le besoin d'un coup
de balai.
Je ne suis pas sûr que la génération de makefile m'enchante.
En tout cas, je n'aime pas beaucoup les deux tentatives que je
connais (imake et automake).
Ses principaux points forts, AMHA :
-- jam gère tout seul Les dépendances des includes; pas besoin de
demander de l'aide au compilateur via -MM -MD -MT ou du
genre... (il se débrouille aussi avec les dépendances de templates
exporté, mais je crois qu'icc fait tout le boulot)
Ses principaux points forts, AMHA :
-- jam gère tout seul Les dépendances des includes; pas besoin de
demander de l'aide au compilateur via -MM -MD -MT ou du
genre... (il se débrouille aussi avec les dépendances de templates
exporté, mais je crois qu'icc fait tout le boulot)
Ses principaux points forts, AMHA :
-- jam gère tout seul Les dépendances des includes; pas besoin de
demander de l'aide au compilateur via -MM -MD -MT ou du
genre... (il se débrouille aussi avec les dépendances de templates
exporté, mais je crois qu'icc fait tout le boulot)
Fabien Chêne wrote:
[en ce qui concerne jam...]Ses principaux points forts, AMHA :
-- jam gère tout seul Les dépendances des includes; pas besoin de
demander de l'aide au compilateur via -MM -MD -MT ou du
genre... (il se débrouille aussi avec les dépendances de templates
exporté, mais je crois qu'icc fait tout le boulot)
Je viens d'y jeter un coup d'oeil rapide aux docs. Et je suis
tombé sur un os. Justement, parce qu'il évalue les dépendances
lui-même, il utilise des règles différentes que le compilateur,
et en particulier : « Also, scanning for regular expressions
only works where the included file name is literally in the
source file. It can't handle languages that allow including
files using variable names (as the Jam language itself does). »
Et aussi, comme le C et le C++. Ça veut dire que dans la
pratique, je ne pourrais pas m'en servir, parce que j'ai bien
des choses du genre :
#include GB_dependentInclude(conf,gb/config.hh)
#include GB_dependentInclude(comp,gb/compiler.hh)
#include GB_dependentInclude(sysFamily,gb/system.hh)
dans tous mes fichiers. C'est bien beau, mais si ça ne marche
pas pour le C et le C++, ça ne m'est pas bien utile.
Peut-être une des extensions de Boost règlent ce problème ?
Fabien Chêne wrote:
[en ce qui concerne jam...]
Ses principaux points forts, AMHA :
-- jam gère tout seul Les dépendances des includes; pas besoin de
demander de l'aide au compilateur via -MM -MD -MT ou du
genre... (il se débrouille aussi avec les dépendances de templates
exporté, mais je crois qu'icc fait tout le boulot)
Je viens d'y jeter un coup d'oeil rapide aux docs. Et je suis
tombé sur un os. Justement, parce qu'il évalue les dépendances
lui-même, il utilise des règles différentes que le compilateur,
et en particulier : « Also, scanning for regular expressions
only works where the included file name is literally in the
source file. It can't handle languages that allow including
files using variable names (as the Jam language itself does). »
Et aussi, comme le C et le C++. Ça veut dire que dans la
pratique, je ne pourrais pas m'en servir, parce que j'ai bien
des choses du genre :
#include GB_dependentInclude(conf,gb/config.hh)
#include GB_dependentInclude(comp,gb/compiler.hh)
#include GB_dependentInclude(sysFamily,gb/system.hh)
dans tous mes fichiers. C'est bien beau, mais si ça ne marche
pas pour le C et le C++, ça ne m'est pas bien utile.
Peut-être une des extensions de Boost règlent ce problème ?
Fabien Chêne wrote:
[en ce qui concerne jam...]Ses principaux points forts, AMHA :
-- jam gère tout seul Les dépendances des includes; pas besoin de
demander de l'aide au compilateur via -MM -MD -MT ou du
genre... (il se débrouille aussi avec les dépendances de templates
exporté, mais je crois qu'icc fait tout le boulot)
Je viens d'y jeter un coup d'oeil rapide aux docs. Et je suis
tombé sur un os. Justement, parce qu'il évalue les dépendances
lui-même, il utilise des règles différentes que le compilateur,
et en particulier : « Also, scanning for regular expressions
only works where the included file name is literally in the
source file. It can't handle languages that allow including
files using variable names (as the Jam language itself does). »
Et aussi, comme le C et le C++. Ça veut dire que dans la
pratique, je ne pourrais pas m'en servir, parce que j'ai bien
des choses du genre :
#include GB_dependentInclude(conf,gb/config.hh)
#include GB_dependentInclude(comp,gb/compiler.hh)
#include GB_dependentInclude(sysFamily,gb/system.hh)
dans tous mes fichiers. C'est bien beau, mais si ça ne marche
pas pour le C et le C++, ça ne m'est pas bien utile.
Peut-être une des extensions de Boost règlent ce problème ?