7
votes

SUPPORTS SORTIR DANS DANS BURE DE BAILLE

J'essaie de modifier mes fichiers SCONS afin qu'ils mettent les fichiers produits dans un répertoire construction . Au départ, je variantdir pourrait être une option mais à juger de tout ce que j'ai lu et les exemples qu'il ne fait pas ce que je veux.

Y a-t-il un moyen simple de forcer les scons à mettre la sortie dans un certain répertoire sans avoir à réécrire toutes les sources et toutes les scripts?


3 commentaires

Quel est le problème avec variantdir ? Avez-vous essayé d'utiliser duplicate = 0 ?


Pour l'utilisation de variantdir Vous devez vendre toute votre âme. Ce qui signifie que vous devez soit tout faire dans le variantdir ou rien. La chose que je et beaucoup d'autres veulent, c'est de mettre uniquement généré de choses dans la version de construction et non de tout.


N'est-ce pas ce que dupliquer = 0 fait? À partir de la DOCS: La duplication de l'arborescence source peut être désactivée en définissant l'argument en double à 0 (zéro). Cela entraînera des scons d'invoquer des constructeurs à l'aide des noms de chemin des fichiers source dans src_dir et les noms de chemin des fichiers dérivés de variante_dir.


4 Réponses :


0
votes

Face à une frustration similaire, j'ai ajouté un site_scons qui a ajouté des constructeurs de remplacement (par exemple "" EXE "au lieu de" programme ") et spécifié un émetteur pour ce constructeur qui a remplacé la partie de chemin avec le répertoire de construction. Cela nécessite l'utilisation du constructeur alternatif dans vos sconscripts cependant.

Vous pouvez également essayer de sous-classer l'environnement et réécrivez les principales cibles à utiliser des réécrites cibles. Ensuite, vous spécifiez votre environnement en tant que défaut (modification de SCONS.Script.Defaultenvironment ou quelque chose comme ça). Cette approche a gardé les Sconscripts statiques mais a été très désordonnée et nécessite plus de maintenance au fil du temps comme changement de scons-internals.


0 commentaires

0
votes

Utilisation de variantdir avec dupliquer = 0 devrait fonctionner.


1 commentaires

Cela vous obligerait à réécrire la majorité des scripts de construction.



0
votes

Vous pouvez utiliser Installer ou installer sur la sortie de la cible. Cela fonctionne pour moi. XXX


0 commentaires

3
votes

Après avoir lu avec VariantDir pendant un certain temps (il ne faisait rien du tout), j'ai fini par utiliser variant_dir dans l'appel de sconscript de niveau supérieur, ce qui cause toutes les sorties de construction en aval finissent par Un arbre parallèle 'build': SCONScript (['Subdies / SConscript'], variante_dir = 'Build', dupliquer = 0) Ma structure de construction est une hiérarchie de Sconscripts dans les sous-divins / sous-sous-directrices, etc. Avec cet appel, les sorties se retrouvent dans la construction / sous-sous-directrices au même niveau que dans la source.

Ceci mange un niveau, bien que (sous-résidents), et en utilisant "../build" n'aide pas. La solution consiste à avoir un fichier SCONScript au même niveau que Sconstructeur et appeler SCONScript (["SCONScript '], variante_dir =' Build ', dupliquer = 0)

Voir aussi Force Swons Sortie (EXE , obj, lib & dll) à un répertoire de construction spécifique - il a une réponse similaire


0 commentaires