J'espère que le titre clarifie ce que je veux demander parce que c'est un peu difficile.SCONS: faire un générateur de script spécial dépend de la sortie d'un autre constructeur
J'ai un SConscript SCONS pour chaque subdir comme suit (le faire sous Linux, si elle importe):
- src_dir
- compilateur
- SConscript
- yacc SRCs
- s cripts
- legacy_script
- données
- SConscript
- fichiers de données pour le yacc
- compilateur
-je utiliser un variant_dir sans copier, f ou par exemple:
SConscript('src_dir/compiler/SConscript', variant_dir = 'obj_dir', duplicate = 0)
Le obj_dir résultant après la construction du yacc est:
- obj_dir
- compilateur
- compiler_compiler.exe
- compilateur
Maintenant, voici l'affaire.
J'ai une autre SConscript dans le répertoire de données qui doit faire 2 choses: 1. compiler les données avec le compilateur compilé yacc
2. Prenez la sortie du compilateur et l'exécuter avec le legacy_script je ne peux pas changer
(le legacy_script, prend la sortie des données compilées et construire des fichiers h pour un autre logiciel à dépendre)
numéro 1 est acheived facilement:
linux_env.Command('[output1, output2]', 'data/data_files','compiler_compiler.exe data_files output1 output2')
mon problème est le numéro 2: Comment puis-je rendre le script dépend des sorties d'une autre cible
Et juste pour clarifier, je dois faire courir SCONS (et seulement si les changements de compiler_output):
src_dir/script/legacy_script obj_dir/data/compiler_output obj_dir/some_dir/script_output
(le script est l'utilisation est: legacy_script fichier_entrée output_file)
J'espère que je me suis fait clair, sentir libre de poser d'autres questions ...
ouais, mais le constructeur commande doit être dans le SConscript du legacy_script, et il est Src est dans le répertoire obj créé par un autre SConscript, alors comment puis-je lui dire que la Src est là? –
Utilisez '# obj_dir/data/compiler_output' pour faire référence à la sortie générée et utilisez ce fichier comme source pour' # obj_dir/some_dir/script_output'. –
Ça a marché! Merci –