2012-10-18 1 views
9

J'essaie de passer -S à gcc pour l'un de mes exécutables. J'ai essayé ceci:Générer l'assembly pour une cible

set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-S") 

mais je reçois « format de fichier non reconnu, le traitement en tant que script de liaison »

(Il se construit bien sans cette ligne)

Y at-il quelque chose de mal avec le passage -S comme ce? Ou existe-t-il une autre façon d'avoir CMake en sortie les fichiers .s de l'assembly?

+6

J'ai appris que si vous tapez « make aide » un projet CMake, vous verrez une liste de cibles. "MyTarget.s" est l'un d'eux, donc simplement faire "make MyTarget.s" produit l'assemblage que je cherchais. –

Répondre

8

Si vous essayez de construire réellement MyTargetet laisser l'assemblage généré, vous pouvez remplacer -S avec -save-temps puis faire make MyTarget

+0

Intéressant, merci! –

16

CMake a des objectifs construits pour les sorties assembleur et préprocesseur. Pour un fichier appelé src.cpp, CMake génère la cible src.s pour la sortie de l'assembleur et src.i pour la sortie du préprocesseur. Il génère séparément les sorties assembleur/préprocesseur pour chaque cible dans le cas où les drapeaux de compilation sont différents. En utilisant le générateur de faire pour votre projet CMake, vous pouvez obtenir les sorties assembleur et préprocesseur comme ceci:

make src.s # assembler output 
make src.i # preprocessor output 
+2

Comment puis-je combiner ceci avec des commentaires source entrelacés, par ex. [this] (http://stackoverflow.com/a/137479/388010)? À la 'g ++ -g -O0 -c -fverbose-asm -Wa, -adhln test.cpp> test.lst' –

+1

Pour l'instant, je modifie manuellement le makefile droit et j'ajoute' -fverbose-asm' après qu'il a été généré . Ensuite, je peux utiliser le bit 'as -alhnd'. –

Questions connexes