2012-10-18 19 views
9

Tôi đang cố chuyển qua -S tới gcc cho một trong các tệp thi hành của tôi. Tôi cố gắng này:Tạo assembly cho một mục tiêu

set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-S") 

nhưng tôi nhận được "định dạng tập tin không được công nhận; điều trị như mối liên kết kịch bản"

(Nó xây dựng tốt mà không có dòng đó)

Có điều gì sai trái với qua -S như điều này? Hoặc là có một cách khác để có CMake đầu ra lắp ráp.

+6

Tôi đã biết 'làm trợ giúp' cho dự án CMake, bạn sẽ thấy danh sách các mục tiêu. "MyTarget.s" là một trong số chúng, vì vậy chỉ cần thực hiện "make MyTarget.s" sẽ tạo ra assembly mà tôi đang tìm kiếm. –

Trả lời

8

Nếu bạn đang cố gắng để thực sự xây dựng MyTarget rời khỏi hội tạo ra, bạn có thể thay -S với -save-temps và sau đó làm make MyTarget

+0

Thú vị, cảm ơn! –

16

CMake có mục tiêu xây dựng vào cho cả lắp ráp và tiền xử lý đầu ra. Đối với một tệp có tên là src.cpp, CMake tạo mục tiêu src.s cho đầu ra của bộ kết hợp và src.i cho đầu ra tiền xử lý. Nó tạo ra các đầu ra của trình biên dịch/bộ xử lý trước cho từng mục tiêu riêng biệt trong trường hợp các cờ biên dịch khác nhau. Sử dụng trình tạo tạo cho dự án CMake của bạn, bạn có thể nhận được kết quả đầu ra của trình biên dịch và tiền xử lý như sau:

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

Làm cách nào để kết hợp điều này với các nhận xét nguồn xen kẽ, ví dụ: [this] (http://stackoverflow.com/a/137479/388010)? À la 'g ++ -g -O0 -c -fverbose-asm -Wa, -adhln test.cpp> test.lst' –

+1

Bây giờ, tôi tự thay đổi đúng makefile và thêm' -fverbose-asm' sau khi nó được tạo ra . Sau đó, tôi có thể sử dụng bit 'as -alhnd'. –

Các vấn đề liên quan