2017-01-14 1 views
1

Comment spécifier un répertoire pour scons pour stocker tous les fichiers .o (intermédiaires)?Comment spécifier un répertoire pour que scons stocke tous les fichiers .o (intermédiaires)?

Ma question est: comment définir quelque chose comme un drapeau global, de sorte que chaque commande 'Object' génère des fichiers .o dans un répertoire solide, et la commande 'Program' va générer dans un autre répertoire? Je ne souhaite pas avoir de variables pour que chaque commande 'Object' et 'Program' utilise explicitement cette variable: elle est moche et couplée. Je souhaite juste avoir quelque chose comme un crochet de compilation.

Par exemple, j'ai un testSystem.cpp, et je SConstruct:

Program('testSystem.cpp') 

Alors scons va d'abord compiler un fichier testSystem.o, et un lien vers un executible de Testsystem.

Je sais que je peux explicitement préciser où où le fichier binaire est stocké:

Program('bin/testSystem','testSystem.cpp') 

Eh bien, le fichier objet est encore sous le répertoire courant. Je peux faire ceci:

testSystem_obj=Object('obj/testSystem.o','testSystem.cpp') 
Program('bin/testSystem',testSystem_obj) 

Maintenant j'ai .o sous ./obj et exécutable sous ./bin. Aucun problème. Mais, cela signifie pour chaque fichier, je dois écrire manuellement 2 lignes, 1 ligne pour dire à scons de générer le fichier objet sous ./obj, une autre ligne pour générer le fichier sous ./bin. Si je souhaite réorganiser tout mon projet, je dois modifier tous mes fichiers SConstruct/SConscript. J'ai un gros projet et je ne veux pas faire ça.

Des indices? Comment faire cela avec des scons?

+0

Vous avez mal orthographié "diretory" .. Devrait être "répertoire". – bdbaddog

Répondre