gcc avec les paramètres "-S -save-temps" place les fichiers intermédiaires dans le répertoire courant
Les paramètres -S -save-temps
beau travail, tant que je ne les utilisez pas sur des fichiers avec le même nom.
Pense de la situation suivante: j'ai un projet avec un répertoire principal et un sous-répertoire avec le nom subDir
et dans les deux répertoires sont des fichiers placés avec le nom file.c
. Si j'appelle maintenant gcc -S -save-temps file.cpp subDir/file.c
un seul fichier intermédiaire avec le nom file.i
sera généré.
Qui est le comportement attendu, comme l'homme le fichier de gcc
me dit que les fichiers intermédiaires seront toujours placés dans le chemin d'accès actuel, lors de l'utilisation de -save-temps
.
Mon problème, c'est que je suis en train de travailler sur des projets je ne sais pas à l'avance. Il pourrait très bien être, que quelqu'un construit mentionné ci-dessus l'exemple dans son Makefiles. Dans ce cas, je serai coincé, parce que j'ai besoin de deux fichiers intermédiaires.
Quelques mots pour le système, je suis de la construction (pour mieux comprendre): Mon outil utilise make --just-print
de recueillir les appels, un fichier d'un projet invoque. J'analyse ces appels pour le compilateur appelle et ajouter le -save-temps
et -S
options. Le but est d'obtenir tous les prétraitées de fichier, qui est utilisé dans le processus de compilation du projet.
Vous avez des idées, je suis en mesure d'obtenir tous les prétraitées fichier, même si l'exemple mentionné ci-dessus doit apparaître?
source d'informationauteur Customizer
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de problème avec file.cpp /fichier.c dans des répertoires différents. GCC va créer un
*.ii
et un*.i
selon les fichiers d'extension.Si elles ont toutes les deux c||rpc, vous pouvez utiliser
-E
et ne recevoir qu'une seule*.i
où vous pouvez rechercher le pragma# 1 "<FILE_PATH>"
et extrait par l'intermédiaire d'un script.Dans gcc 4.5 vous pouvez utiliser l'option "-save-temps=obj" lors de l'utilisation de l'option-o de. Cela permet d'économiser l'intermédiaire des fichiers dans le même répertoire que le fichier de sortie, qui peuvent aider à prévenir des problèmes lorsque vous avez le même nom de fichier à l'aide de différentes sources et répertoires en sortie.
L'intermédiaire de fichiers seront enregistrés en tant que
dir1/foo.*
etdir2/foo.*