2010-09-14 4 views
6

J'ai un projet de bibliothèque qui contient des exemples dans un sous-dossier.Création d'une construction hiérarchique avec SCons

La bibliothèque elle-même a un fichier SConstruct et chaque échantillon a son propre dossier et son propre fichier SConstruct.

Je voudrais ajouter une cible au fichier principal (racine) SConstruct qui me permettrait de compiler la bibliothèque comme d'habitude, et tous les échantillons, à la fois.

Existe-t-il un mécanisme/constructeur pour cela? P.S: Je ne veux pas avoir un seul grand fichier SConstruct car je veux que les dossiers échantillons restent indépendants.

Répondre

8

http://www.scons.org/doc/production/HTML/scons-man.html

Création d'un contrat de construction hiérarchique

Notez que les noms de fichiers spécifiés dans SConscript d'un sous-répertoire fichier sont liés à ce sous-répertoire.

SConstruct:

env = Environment() 
env.Program(target = 'foo', source = 'foo.c') 

SConscript('sub/SConscript') 

sous/SConscript:

env = Environment() 
# Builds sub/foo from sub/foo.c 
env.Program(target = 'foo', source = 'foo.c') 

SConscript('dir/SConscript') 

sous/dir/SConscript:

env = Environment() 
# Builds sub/dir/foo from sub/dir/foo.c 
env.Program(target = 'foo', source = 'foo.c') 
+0

Impossible de le trouver dans les docs. Exactement ce dont j'avais besoin. Merci beaucoup. – ereOn

4

Pour ceux qui, comme moi à venir à cette question de Google, J'ai trouvé un exemple plus complet de construction d'une bibliothèque et d'un code appelé il here.

(Excuses si cette réponse d'une vieille question est désapprouvée - un grand nombre de recherches pour diverses combinaisons de "scons" "sous-répertoire" "hiérarchique" "construire", etc. suggèrent cette page, et je ferais j'aime sauver les autres les 8 heures et plus que je viens de passer à essayer d'obtenir des builds hiérarchiques pour fonctionner proprement).

+0

C'est une bonne référence en effet. Après plusieurs années, [j'ai pu enfin atteindre mes objectifs] (https://github.com/freelan-developers/freelan-all) en utilisant des builds hiérarchiques SCons: le projet est séparé en plusieurs libs/samples/apps qui utilisent tous le même Fichiers SCons. – ereOn