2012-10-18 8 views
9

Próbuję przekazać -S do gcc dla jednego z moich plików wykonywalnych. Próbowałem to:Generowanie zespołu docelowego

set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-S") 

ale otrzymuję „Format pliku nie jest rozpoznawany, traktując jako skrypt linkera”

(buduje dobrze bez tej linii)

jest coś nie tak z przechodzącej -S jak to? Czy istnieje inny sposób, aby CMake wypisać pliki montażowe .s?

+6

dowiedziałem się, że po wpisaniu „make help” na projekcie CMake, zobaczysz listę celów. "MyTarget.s" jest jednym z nich, więc po prostu robi "make MyTarget.s" produkuje zespół, którego szukałem. –

Odpowiedz

8

Jeśli starasz się faktycznie zbudować MyTargeti zostawić wygenerowany montaż, można zastąpić -S z -save-temps a następnie zrobić make MyTarget

+0

Interesujące, dzięki! –

16

CUpewnij cele ma wbudowane zarówno dla asemblera i preprocesora wyjściu. W przypadku pliku o nazwie src.cpp program CMake generuje obiekt docelowy src.s dla wyjścia asemblera i src.i dla wyjścia preprocesora. Generuje osobno wyjścia asemblera/preprocesora dla każdego celu na wypadek, gdyby flagi kompilacji były inne. Korzystanie z generatora zrobić dla swojego projektu CMake, można uzyskać wyjścia asemblera i preprocesora tak:

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

Jak mogę połączyć to z komentarzami źródłowymi z przeplotem, np. [to] (http://stackoverflow.com/a/137479/388010)? À la 'g ++ -g -O0 -c -fverbose-asm -Wa, -adhln test.cpp> test.lst' –

+1

Na razie ręcznie modyfikuję właściwy plik makefile i dodam' -fverbose-asm' po jego wygenerowaniu . Następnie mogę użyć bitu 'as -alhnd'. –