Je cherche un outil qui me permette de lancer des compilations de façon
simple sur un projet de plusieurs executables.
Quand je dis simple, je veux dire qui sache trouver automatiquement les
dépendances, qui génére les fichiers .o seulement s'ils ne sont pas à jour
avec leurs sources, et qui m'oblige à une certaine organisation de mes
sources évidemment.
Qui fait que je n'ai plus qu'à lancer une compilation de mon executable,
plein d'autres dépendances, de cette façon :
$MON_OUTIL chemin/vers/mon/exe.cpp
| Je pense que c'est comme en C quand tu utilises des macros en | metalangage pour construire ton programme: tant que tu ne sors pas des | chemins battus, ça se passe bien.
| Je pense que c'est comme en C quand tu utilises des macros en
| metalangage pour construire ton programme: tant que tu ne sors pas des
| chemins battus, ça se passe bien.
| Je pense que c'est comme en C quand tu utilises des macros en | metalangage pour construire ton programme: tant que tu ne sors pas des | chemins battus, ça se passe bien.
C'est tout le framework qui est a jeter, a ce niveau... deja, distribue du shell script auto-genere, beurk.
Tu veux un exemple ? il y a eu un probleme de securite dans libtool, conduisant a une version *b d'une version existante.
Le gugusse qui a fait la release a eu l'idee geniale de tout verifier sur son systeme, avec un nouvel automake. Resultat: 8000 lignes de diffs, dans lesquelles chercher LE probleme de securite de deux lignes (pour backporter sur une ancienne version)... pas tres surprenant qu'il y ait deja eu plusieurs personnes qui foutent des troyens dans du auto*shit. Pas grand monde n'a la patience pour s'assurer que les 8000 lignes de diffs sont bien "du bruit" et pas des problemes.
Au passage, le code correspondant de libltdl est lui-meme a gerber. Je ne serais pas surpris qu'il y ait d'autres failles dedans, vu l'immonde plat de spaghettis et de tests divers et varies.
A mon avis, ca n'est pas du tout un hasard si kde, par exemple, s'est finalement affranchi d'automake/autoconf/libtool. Entre autres, la structure en Makefile recursifs augmentait terriblement les temps de compilation sur toutes les plateformes disposant de plusieurs processeurs (make -j n'est efficace QUE si on peut compiler plusieurs trucs dans le meme Makefile).
Mais bon, on est plus dans l'idee de faire une version qui marche de libtool par exemple, meme si elle sera au depart reduite a OpenBSD, et ne suivant pas les dogmes en vigueur (e.g., c'est du perl recent, et ca permet d'ores et deja de compiler pas mal de trucs bien plus vite que le libtool gnu). Et en plus, ca marche chez nous, sachant que reparer un shell-script de 8000 lignes qui prend l'eau de toutes parts, qui ne peut pas pas marcher correctement pour autre chose que des lib elf linux, et qui n'a pas reellement de notion de packager (on installe a l'endroit definitif...), c'est du SM extreme...
In article <87d433q1tx.fsf@gauss.cs.tamu.edu>,
Gabriel Dos Reis <gdr@cs.tamu.edu> wrote:
C'est tout le framework qui est a jeter, a ce niveau... deja, distribue
du shell script auto-genere, beurk.
Tu veux un exemple ? il y a eu un probleme de securite dans libtool,
conduisant a une version *b d'une version existante.
Le gugusse qui a fait la release a eu l'idee geniale de tout verifier
sur son systeme, avec un nouvel automake. Resultat: 8000 lignes de diffs,
dans lesquelles chercher LE probleme de securite de deux lignes (pour
backporter sur une ancienne version)... pas tres surprenant qu'il y ait
deja eu plusieurs personnes qui foutent des troyens dans du auto*shit.
Pas grand monde n'a la patience pour s'assurer que les 8000 lignes de diffs
sont bien "du bruit" et pas des problemes.
Au passage, le code correspondant de libltdl est lui-meme a gerber. Je ne
serais pas surpris qu'il y ait d'autres failles dedans, vu l'immonde plat
de spaghettis et de tests divers et varies.
A mon avis, ca n'est pas du tout un hasard si kde, par exemple, s'est
finalement affranchi d'automake/autoconf/libtool. Entre autres, la structure
en Makefile recursifs augmentait terriblement les temps de compilation sur
toutes les plateformes disposant de plusieurs processeurs (make -j n'est
efficace QUE si on peut compiler plusieurs trucs dans le meme Makefile).
Mais bon, on est plus dans l'idee de faire une version qui marche de libtool
par exemple, meme si elle sera au depart reduite a OpenBSD, et ne suivant
pas les dogmes en vigueur (e.g., c'est du perl recent, et ca permet d'ores
et deja de compiler pas mal de trucs bien plus vite que le libtool gnu).
Et en plus, ca marche chez nous, sachant que reparer un shell-script de
8000 lignes qui prend l'eau de toutes parts, qui ne peut pas pas marcher
correctement pour autre chose que des lib elf linux, et qui n'a pas
reellement de notion de packager (on installe a l'endroit definitif...),
c'est du SM extreme...
C'est tout le framework qui est a jeter, a ce niveau... deja, distribue du shell script auto-genere, beurk.
Tu veux un exemple ? il y a eu un probleme de securite dans libtool, conduisant a une version *b d'une version existante.
Le gugusse qui a fait la release a eu l'idee geniale de tout verifier sur son systeme, avec un nouvel automake. Resultat: 8000 lignes de diffs, dans lesquelles chercher LE probleme de securite de deux lignes (pour backporter sur une ancienne version)... pas tres surprenant qu'il y ait deja eu plusieurs personnes qui foutent des troyens dans du auto*shit. Pas grand monde n'a la patience pour s'assurer que les 8000 lignes de diffs sont bien "du bruit" et pas des problemes.
Au passage, le code correspondant de libltdl est lui-meme a gerber. Je ne serais pas surpris qu'il y ait d'autres failles dedans, vu l'immonde plat de spaghettis et de tests divers et varies.
A mon avis, ca n'est pas du tout un hasard si kde, par exemple, s'est finalement affranchi d'automake/autoconf/libtool. Entre autres, la structure en Makefile recursifs augmentait terriblement les temps de compilation sur toutes les plateformes disposant de plusieurs processeurs (make -j n'est efficace QUE si on peut compiler plusieurs trucs dans le meme Makefile).
Mais bon, on est plus dans l'idee de faire une version qui marche de libtool par exemple, meme si elle sera au depart reduite a OpenBSD, et ne suivant pas les dogmes en vigueur (e.g., c'est du perl recent, et ca permet d'ores et deja de compiler pas mal de trucs bien plus vite que le libtool gnu). Et en plus, ca marche chez nous, sachant que reparer un shell-script de 8000 lignes qui prend l'eau de toutes parts, qui ne peut pas pas marcher correctement pour autre chose que des lib elf linux, et qui n'a pas reellement de notion de packager (on installe a l'endroit definitif...), c'est du SM extreme...
TSalm
Le Fri, 27 Nov 2009 17:40:26 +0100, ld a écrit:
On 24 nov, 22:21, TSalm wrote:
Merci à tous pour vos réponses. Vu qu'il semble qu'il faut en passer par là, je vais déjà commencer par
apprendre les Makefile.
Puisque c'est cette direction que vous avez choisi, jetez un oeil sur la GNU Make Standard Library
http://gmsl.sourceforge.net/
Ca n'explique pas les fondements de make, mais plutot comment faire des macros utiles.
a+, ld.
Bon, ce n'est pas encore très utile à mon (petit) niveau, mais je garde ça de côté. Merci
Le Fri, 27 Nov 2009 17:40:26 +0100, ld <laurent.deniau@gmail.com> a écrit:
On 24 nov, 22:21, TSalm <ts...@free.fr> wrote:
Merci à tous pour vos réponses.
Vu qu'il semble qu'il faut en passer par là, je vais déjà commencer par
apprendre les Makefile.
Puisque c'est cette direction que vous avez choisi, jetez un oeil sur
la GNU Make Standard Library
http://gmsl.sourceforge.net/
Ca n'explique pas les fondements de make, mais plutot comment faire
des macros utiles.
a+, ld.
Bon, ce n'est pas encore très utile à mon (petit) niveau, mais je garde ça
de côté.
Merci
| >| Je pense enormement de mal des autotools. Typiquement, ces derniers temps | >| ils permettent surtout de verifier que ca compile sur plusieurs variations | >| de linux/i386... j'ai passe suffisamment de temps a corriger des tonnes de | >| bugs sur ceux-ci pour ne plus du tout les aimer (entre autres, des cons | >| qui utilisent sed -i dans un configure.ac...)
| C'est tout le framework qui est a jeter, a ce niveau... deja, distribue | du shell script auto-genere, beurk.
Donc, ton probleme c'est pas qu'ils verifient que leur "truc" marche sur des variations de linux/i386...
Ben, quand les problemes necessitent de tout refaire (ou presque) pour que ca fonctionne ailleurs que sur des variations de linux/i386, c'est qu'il y a un vrai souci.
In article <87iqcvdznv.fsf@gauss.cs.tamu.edu>,
Gabriel Dos Reis <gdr@cs.tamu.edu> wrote:
| >| Je pense enormement de mal des autotools. Typiquement, ces derniers temps
| >| ils permettent surtout de verifier que ca compile sur plusieurs variations
| >| de linux/i386... j'ai passe suffisamment de temps a corriger des tonnes de
| >| bugs sur ceux-ci pour ne plus du tout les aimer (entre autres, des cons
| >| qui utilisent sed -i dans un configure.ac...)
| C'est tout le framework qui est a jeter, a ce niveau... deja, distribue
| du shell script auto-genere, beurk.
Donc, ton probleme c'est pas qu'ils verifient que leur "truc" marche sur
des variations de linux/i386...
Ben, quand les problemes necessitent de tout refaire (ou presque) pour que
ca fonctionne ailleurs que sur des variations de linux/i386, c'est qu'il y
a un vrai souci.
| >| Je pense enormement de mal des autotools. Typiquement, ces derniers temps | >| ils permettent surtout de verifier que ca compile sur plusieurs variations | >| de linux/i386... j'ai passe suffisamment de temps a corriger des tonnes de | >| bugs sur ceux-ci pour ne plus du tout les aimer (entre autres, des cons | >| qui utilisent sed -i dans un configure.ac...)
| C'est tout le framework qui est a jeter, a ce niveau... deja, distribue | du shell script auto-genere, beurk.
Donc, ton probleme c'est pas qu'ils verifient que leur "truc" marche sur des variations de linux/i386...
Ben, quand les problemes necessitent de tout refaire (ou presque) pour que ca fonctionne ailleurs que sur des variations de linux/i386, c'est qu'il y a un vrai souci.
James Kanze
On Nov 27, 6:00 pm, Gabriel Dos Reis wrote:
James Kanze writes:
> On Nov 26, 8:49 am, Michael Doubez wrote: > > On 25 nov, 18:16, James Kanze wrote: > > [snip] > > Il y a aussi les outils gnuwin32 (dont make) qui permettent > > d'avoir les outils classics en win32 natif. Je les utilise > > pour compléter mon install de MinGW avec sed, cat, wget ... et > > même les expression [ - f ... ]. Le seul conflit que j'ai > > trouvé avec Windows est avec echo et find.
> En effet.
> En général, les ports plus ou moins complets des outils Unix > (CygWin, MinGW) s'integrent mal dans Windows, et posent des
Je n'ai pas de problème particulier avec MSYS/MinGW -- c'est une plateforme de cross-compilation qui remplit largement son but. Il n'a aucune prétention de fournir POSIX.
Ce n'est pas Posix que je démande ; je suis sous Windows, et non sur une plateforme Unix. Et le problème et avec CygWin et avec MinGW, c'est qu'ils essaient à cacher le fait. Les deux créent leur propre image du système de fichiers, par exemple, avec '/cygdrive/c/' sous CygWin et '/c/' sous MinGW. Ce qui veut dire que sous CygWin, si tu entres le nom de fichier d'une façon que l'achèvement des noms de fichiers marche, les autres programmes ne le comprenent. MinGW, en revanche, le remappe (au moins dans certains cas). Jusqu'à remplacer un '/' initial avec "c:/msys/...", ce qui pose un problème pour les programmes Windows, qui utilise '/' comme on utilise '-' sous Unix.
Si je voulais Unix (et quelque chose qui s'approche de Posix), j'installerais Linux. Si je suis sous Windows, c'est que je veux un certain nombre des fonctionalités de Windows. Si j'installe CygWin ou MSys en plus, ce n'est pas que je veux un environement Unix complet ; c'est que je veux quelques uns des fonctionalités d'Unix dont je n'ai pas trouvé d'équivalent sous Windows -- des choses comme awk, par exemple, où la version Unix de find (« find | xargs egrep », c'est essentiel quand il faut se retrouver dans une masse énorme de code existant, sans documentation). Voire même la possibilité d'éditer la ligne de commande sans éloigner mes doigts de la position de base. (Le shell Windows que je connais ne permet l'édition qu'au moyen des touches de fleches.)
-- James Kanze
On Nov 27, 6:00 pm, Gabriel Dos Reis <g...@cs.tamu.edu> wrote:
James Kanze <james.ka...@gmail.com> writes:
> On Nov 26, 8:49 am, Michael Doubez <michael.dou...@free.fr> wrote:
> > On 25 nov, 18:16, James Kanze <james.ka...@gmail.com> wrote:
> > [snip]
> > Il y a aussi les outils gnuwin32 (dont make) qui permettent
> > d'avoir les outils classics en win32 natif. Je les utilise
> > pour compléter mon install de MinGW avec sed, cat, wget ... et
> > même les expression [ - f ... ]. Le seul conflit que j'ai
> > trouvé avec Windows est avec echo et find.
> En effet.
> En général, les ports plus ou moins complets des outils Unix
> (CygWin, MinGW) s'integrent mal dans Windows, et posent des
Je n'ai pas de problème particulier avec MSYS/MinGW -- c'est
une plateforme de cross-compilation qui remplit largement son
but. Il n'a aucune prétention de fournir POSIX.
Ce n'est pas Posix que je démande ; je suis sous Windows, et non
sur une plateforme Unix. Et le problème et avec CygWin et avec
MinGW, c'est qu'ils essaient à cacher le fait. Les deux créent
leur propre image du système de fichiers, par exemple, avec
'/cygdrive/c/' sous CygWin et '/c/' sous MinGW. Ce qui veut dire
que sous CygWin, si tu entres le nom de fichier d'une façon que
l'achèvement des noms de fichiers marche, les autres programmes
ne le comprenent. MinGW, en revanche, le remappe (au moins dans
certains cas). Jusqu'à remplacer un '/' initial avec
"c:/msys/...", ce qui pose un problème pour les programmes
Windows, qui utilise '/' comme on utilise '-' sous Unix.
Si je voulais Unix (et quelque chose qui s'approche de Posix),
j'installerais Linux. Si je suis sous Windows, c'est que je veux
un certain nombre des fonctionalités de Windows. Si j'installe
CygWin ou MSys en plus, ce n'est pas que je veux un environement
Unix complet ; c'est que je veux quelques uns des fonctionalités
d'Unix dont je n'ai pas trouvé d'équivalent sous Windows -- des
choses comme awk, par exemple, où la version Unix de find (« find
| xargs egrep », c'est essentiel quand il faut se retrouver dans
une masse énorme de code existant, sans documentation). Voire
même la possibilité d'éditer la ligne de commande sans éloigner
mes doigts de la position de base. (Le shell Windows que je
connais ne permet l'édition qu'au moyen des touches de fleches.)
> On Nov 26, 8:49 am, Michael Doubez wrote: > > On 25 nov, 18:16, James Kanze wrote: > > [snip] > > Il y a aussi les outils gnuwin32 (dont make) qui permettent > > d'avoir les outils classics en win32 natif. Je les utilise > > pour compléter mon install de MinGW avec sed, cat, wget ... et > > même les expression [ - f ... ]. Le seul conflit que j'ai > > trouvé avec Windows est avec echo et find.
> En effet.
> En général, les ports plus ou moins complets des outils Unix > (CygWin, MinGW) s'integrent mal dans Windows, et posent des
Je n'ai pas de problème particulier avec MSYS/MinGW -- c'est une plateforme de cross-compilation qui remplit largement son but. Il n'a aucune prétention de fournir POSIX.
Ce n'est pas Posix que je démande ; je suis sous Windows, et non sur une plateforme Unix. Et le problème et avec CygWin et avec MinGW, c'est qu'ils essaient à cacher le fait. Les deux créent leur propre image du système de fichiers, par exemple, avec '/cygdrive/c/' sous CygWin et '/c/' sous MinGW. Ce qui veut dire que sous CygWin, si tu entres le nom de fichier d'une façon que l'achèvement des noms de fichiers marche, les autres programmes ne le comprenent. MinGW, en revanche, le remappe (au moins dans certains cas). Jusqu'à remplacer un '/' initial avec "c:/msys/...", ce qui pose un problème pour les programmes Windows, qui utilise '/' comme on utilise '-' sous Unix.
Si je voulais Unix (et quelque chose qui s'approche de Posix), j'installerais Linux. Si je suis sous Windows, c'est que je veux un certain nombre des fonctionalités de Windows. Si j'installe CygWin ou MSys en plus, ce n'est pas que je veux un environement Unix complet ; c'est que je veux quelques uns des fonctionalités d'Unix dont je n'ai pas trouvé d'équivalent sous Windows -- des choses comme awk, par exemple, où la version Unix de find (« find | xargs egrep », c'est essentiel quand il faut se retrouver dans une masse énorme de code existant, sans documentation). Voire même la possibilité d'éditer la ligne de commande sans éloigner mes doigts de la position de base. (Le shell Windows que je connais ne permet l'édition qu'au moyen des touches de fleches.)
-- James Kanze
James Kanze
On Nov 27, 6:09 pm, Gabriel Dos Reis wrote:
James Kanze writes:
> On Nov 26, 2:49 pm, Michael Doubez wrote: > > On 26 nov, 14:03, (Marc Espie) wrote:
> > > In article groups.com>,
> [...] > > > Parce que mv file file.old && sed <file.old >file c'est pas > > > sorcier.
> > Et pourtant il y a une erreur pour avoir le même comportement > > ;) mv file file.old && sed <file.old >file && rm file.old
> J'espère que ce n'est pas le comportement du -i. Sinon, > c'est à éviter. Comme j'ai dire ailleurs, il ne faut pas > détruire l'original si on rencontre une erreur lors de la > transformation.
Dans ce cas, la commande 'rm file.old' n'est jamais exécutée. Non?
Non, mais le ficher « file » a quand même disparu. Je préfère de loin la version :
sed file > unTemporaire && mv unTemporaire file
Mais évidemment, pour avoir la fonctionnalité de -i, il faudrait plutôt : for x do sed $x > unTemporaire && mv unTemporaire $x done Et encore, le comportement n'est pas tout à fait identique en cas d'erreur.
-- James Kanze
On Nov 27, 6:09 pm, Gabriel Dos Reis <g...@cs.tamu.edu> wrote:
James Kanze <james.ka...@gmail.com> writes:
> On Nov 26, 2:49 pm, Michael Doubez <michael.dou...@free.fr> wrote:
> > On 26 nov, 14:03, es...@lain.home (Marc Espie) wrote:
> > > In article <7e4eb714-457f-4f2e-beb0-07c3ae175...@g26g2000yqe.google groups.com>,
> [...]
> > > Parce que mv file file.old && sed <file.old >file c'est pas
> > > sorcier.
> > Et pourtant il y a une erreur pour avoir le même comportement
> > ;) mv file file.old && sed <file.old >file && rm file.old
> J'espère que ce n'est pas le comportement du -i. Sinon,
> c'est à éviter. Comme j'ai dire ailleurs, il ne faut pas
> détruire l'original si on rencontre une erreur lors de la
> transformation.
Dans ce cas, la commande 'rm file.old' n'est jamais exécutée.
Non?
Non, mais le ficher « file » a quand même disparu. Je préfère de
loin la version :
sed file > unTemporaire && mv unTemporaire file
Mais évidemment, pour avoir la fonctionnalité de -i, il faudrait
plutôt :
for x
do sed $x > unTemporaire && mv unTemporaire $x
done
Et encore, le comportement n'est pas tout à fait identique en
cas d'erreur.
> On Nov 26, 2:49 pm, Michael Doubez wrote: > > On 26 nov, 14:03, (Marc Espie) wrote:
> > > In article groups.com>,
> [...] > > > Parce que mv file file.old && sed <file.old >file c'est pas > > > sorcier.
> > Et pourtant il y a une erreur pour avoir le même comportement > > ;) mv file file.old && sed <file.old >file && rm file.old
> J'espère que ce n'est pas le comportement du -i. Sinon, > c'est à éviter. Comme j'ai dire ailleurs, il ne faut pas > détruire l'original si on rencontre une erreur lors de la > transformation.
Dans ce cas, la commande 'rm file.old' n'est jamais exécutée. Non?
Non, mais le ficher « file » a quand même disparu. Je préfère de loin la version :
sed file > unTemporaire && mv unTemporaire file
Mais évidemment, pour avoir la fonctionnalité de -i, il faudrait plutôt : for x do sed $x > unTemporaire && mv unTemporaire $x done Et encore, le comportement n'est pas tout à fait identique en cas d'erreur.