2012-10-18 14 views
9

Sto provando a passare da -S a gcc per uno dei miei file eseguibili. Ho provato questo:Genera assemblaggio per una destinazione

set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-S") 

ma ottengo "formato di file non riconosciuto; trattare come script del linker"

(Costruisce bene anche senza quella linea)

C'è qualcosa di sbagliato con il passare -S come Questo? Oppure esiste un altro modo per far sì che CMake restituisca i file di assembly .s?

+6

Ho imparato che se si digita 'make help' su un progetto CMake, verrà visualizzato un elenco di destinazioni. "MyTarget.s" è uno di questi, così facendo semplicemente "make MyTarget.s" produce l'assembly che stavo cercando. –

risposta

8

se si sta cercando di costruire in realtà MyTargete lasciare l'assembly generato, è possibile sostituire con -S-save-temps e poi fare make MyTarget

+0

Interessante, grazie! –

16

CMake ha obiettivi costruiti in sia per assembler e preprocessore uscita. Per un file chiamato src.cpp, CMake genera l'obiettivo src.s per l'output dell'assembler e src.i per l'output del preprocessore. Genera le uscite assembler/preprocessore per ciascun target separatamente nel caso in cui i flag di compilazione siano diversi. Utilizzando il generatore di marca per il vostro progetto CMake, è possibile ottenere le uscite assembler e del preprocessore come questo:

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

Come posso combinare questo con commenti sorgente interlacciati, ad es. [Questo] (http://stackoverflow.com/a/137479/388010)? À la 'g ++ -g -O0 -c -fverbose-asm -Wa, -adhln test.cpp> test.lst' –

+1

Per ora, modifico manualmente il makefile corretto e aggiungendo' -fverbose-asm' dopo che è stato generato . Quindi posso usare il bit 'as -alhnd'. –

Problemi correlati