2012-10-18 14 views
9

के लिए असेंबली जेनरेट करें मैं अपने निष्पादन योग्यों में से एक के लिए जीसीसी को पास करने की कोशिश कर रहा हूं। मैं इस की कोशिश की:लक्ष्य

set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-S") 

लेकिन मैं मिलता है "फ़ाइल स्वरूप पहचाना नहीं गया; लिंकर स्क्रिप्ट के रूप में इलाज"

(यह है कि रेखा के बिना ठीक बनाता है)

वहाँ कुछ गुजर तरह एस के साथ कुछ गलत है इस? या क्या सीएमके को विधानसभा फाइलों का उत्पादन करने का एक और तरीका है?

+6

मुझे पता चला है कि अगर आप टाइप एक CMake परियोजना पर 'मदद कर', आप लक्ष्यों की एक सूची दिखाई देगी। "MyTarget.s" उनमें से एक है, इसलिए बस "MyTarget.s बनाएं" जो असेंबली मैं ढूंढ रहा था उसका उत्पादन करता हूं। –

उत्तर

8

आप वास्तव में MyTargetका निर्माण करने की कोशिश कर रहे हैं और उत्पन्न विधानसभा छोड़ देते हैं तो आप -save-temps साथ -S जगह ले सकता है और उसके बाद make MyTarget

+0

दिलचस्प, धन्यवाद! –

16

CMake दोनों कोडांतरक और पूर्वप्रक्रमक उत्पादन के लिए बनाया लक्ष्य है है। src.cpp नामक फ़ाइल के लिए, सीएमके प्रीप्रोसेसर आउटपुट के लिए असेंबलर आउटपुट और src.i के लिए लक्ष्य src.s उत्पन्न करता है। संकलन झंडे अलग होने पर यह प्रत्येक लक्ष्य के लिए असेंबलर/प्रीप्रोसेसर आउटपुट उत्पन्न करता है। अपने CMake परियोजना के लिए मेकअप जनरेटर का उपयोग करना, आप इस तरह कोडांतरक और पूर्वप्रक्रमक आउटपुट प्राप्त कर सकते हैं:

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

मैं इसे अंतःस्थापित स्रोत टिप्पणियों के साथ कैसे जोड़ सकता हूं, उदा। [इस] (http://stackoverflow.com/a/137479/388010)? À ला 'g ++ -g -O0 -c -fverbose-asm -Wa, -adhln test.cpp> test.lst' –

+1

अभी के लिए, मैं मैन्युअल रूप से सही मेकफ़ाइल बदलता हूं और इसे उत्पन्न करने के बाद '-फवरबोज-एएसएम' जोड़ता हूं । फिर मैं 'as -alhnd' बिट का उपयोग कर सकता हूं। –