Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

que pensez vous de scons ?

4 réponses
Avatar
chris
Bonjour,

j'ai pas compris grand chose a scons sauf qu'il m'a l'air tres pratique
car on peut mettre des vrais fonctions et test
mais des que j'essaye de faire la meme chose qu'avec mes makefile
je comprend plus rien

ainsi mes makefile font :

run => lancement du script python
debug => idem en mode debug
install => installation du script
on test si un rep existe
on copie eventuellement

clean => on nettoie le repertoire
on vire certaine chose (*.tra ..)

status => lance la commande status svn
id => marquage du id svn ...

bref du simple mais parfois j'aimerais une prise en compte de certains
tests exemple pouvoir selectionner plusieurs jeux d'options ..

alors voici la question quelqu'un utilise scons et en est content ?
pourquoi ?

Merci
a+
chris

4 réponses

Avatar
NicolasP
> alors voici la question quelqu'un utilise scons et en est content ?
pourquoi ?




J'utilise scons pour toutes les cross-compilations que j'ai à faire au boulot.
Je développe sur plateforme PC (WinXP) mais les cibles sont des cartes à base de micro-controlleur (genre ce que l'on peut trouver dans un iPhone).
Avant, j'utilisais un gestionnaire de compil/link intégré à une éditeur spécialisé pour la cross-compilation. Mais c'était limité et l'éditeur s'est fait dépasser par d'autres. J'ai basculé sur Eclipse il y a un bon moment. Mais le gestionnaire de compil/link du plugin C/C++ d'Eclipse ne gère bien que le compilateur GNU. J'ai donc pensé au makefile. Système, à mon avis, dépassé, lourd dans sa syntaxe, difficile à maitriser et exigeant un makefile.exe ou autre pour fonctionner.
J'ai donc cherché mieux, et je suis tombé sur scons. Depuis, j'utilise scons.
Scons étant écrit en python, tout est possible. Scons n'est pas un module Python. Scons est un outil autonome programmé en Python. Donc, pas de "import scons" ou autre dans le genre. Un fichier sconsfile est écrit en Python et est exécuté comme un fichier Python normal mis à part qu'il y a "l'environnement" scons en plus.
J'utilise encore une vieille version ce qui fait que mes fichiers sconsfile ne sont pas optimisés par rapport à la version 1.0 qui vient de sortir, mais j'ai pu faire tout ce que je voulais avec. Par exemple, capturer la sortie du compilateur pour la modifier et l'adapter à ce que Eclipse attend (c'est à dire un formatage à la GNU). Scons a bien évolué au cours du temps et s'est bien amélioré.
Un des plus gros reproches faits à scons est sa lenteur. Je n'ai pas de projets assez gros pour que cela me gêne. Il y a des moyens pour contourner le problème. Par exemple, scons n'utilise pas, par défaut, la date et l'heure des fichiers pour savoir si un fichier doit être "compilé". Scons calcule une somme MD5 de chaque fichier et la compare à celle calculée précédemment (scons crée un fichier .sconsign.dblite) pour savoir si un fichier doit être "compilé". Ce comportement peut être modifié pour utiliser les dates et heures des fichiers à la place des sommes MD5, ce qui est plus rapide. Je dis "compilé" car une cible peut être n'importe quoi ainsi que le "compilateur". Certains utilisent scons pour gérer des fichiers latex. Dans mon cas, une fois la cross-compilation et le link faits, il y a encore des choses à faire pour arriver au fichier téléchargeable dans la cible. Ces étapes supplémentaires sont gérées par scons.
De plus, la user mailing list de scons est très active avec des gens compétents qui répondent vite.

Nicolas
Avatar
chris
Merci pour la réponse en fait je m'attendais a une reponse de ce style
mais mon probleme est le suivant
J'utilise make par defaut car je ne connais d'autres outils du cycle
think - edit - make
Mais pour du python j'utilise make :
- pour lancer python option prog.py option du programme (make run)
- lancer un status svn (make stat)
- lancer l'install (make install)
- nettoyer (make clean)

bref des taches repetitives mais pas de cycle compile / link ...

je sais que des shell pourrait faire la même chose mais make a qq chose
de concis que j'aime

et j'aimerais faire la même chose mais en plus poussé et je pensais a
scons mais j'ai pas compris comment on pouvait le faire de manière simple

voila mon soucis merci de m'apporter un peu de lumière

A+
chris
Avatar
NicolasP
chris a écrit :
Merci pour la réponse en fait je m'attendais a une reponse de ce style
mais mon probleme est le suivant
J'utilise make par defaut car je ne connais d'autres outils du cycle
think - edit - make
Mais pour du python j'utilise make :
- pour lancer python option prog.py option du programme (make run)
- lancer un status svn (make stat)
- lancer l'install (make install)
- nettoyer (make clean)

bref des taches repetitives mais pas de cycle compile / link ...

je sais que des shell pourrait faire la même chose mais make a qq chose
de concis que j'aime

et j'aimerais faire la même chose mais en plus poussé et je pensais a
scons mais j'ai pas compris comment on pouvait le faire de manière simple

voila mon soucis merci de m'apporter un peu de lumière



je ne suis pas expert de scons. D'autant plus que j'utilise encore une vieille version de scons.
Le principe de scons est d'utiliser des builders pour tout. Il existe des builders déjà faits. Par exemple, il y en a un pour visual C++. On peut faire ses propres builders. Grossièrement, quand on crée un builder, on dit quelle est la cible et comment faire pour la créer. Cette cible peut être dépendante d'une ou plusieurs autres cibles. Scons gère les dépendances tout seul bien évidemment. Il est possible de déclarer des actions à faire avant ou après la construction de la cible.
Si tu parles anglais, je t'invites à poser tes questions sur la user mailling list de scons. Tu pourras avoir des réponses précises.

Nicolas
Avatar
chris
Merci

A+
chris