Создать сборку для целевой

Я пытаюсь передать -S в GCC для одного из моих исполняемых файлов. Я попробовал это:

set_target_properties(MyTarget PROPERTIES COMPILE_FLAGS "-S") 

но я получаю "формат файла не распознан; рассматривается как скрипт компоновщика"

(Он прекрасно строится без этой линии)

Что-то не так с прохождением -S как это? Или есть другой способ заставить CMake выводить файлы сборки .s?

Ответ 1

Если вы пытаетесь построить MyTarget и оставить сгенерированную сборку, вы можете заменить -S на -save-temps, а затем сделать make MyTarget

Ответ 2

У CMake есть цели, встроенные для выхода ассемблера и препроцессора. Для файла с именем src.cpp CMake генерирует целевой src.s для выхода ассемблера и src.i для вывода препроцессора. Он генерирует выходные данные ассемблера/препроцессора для каждой цели отдельно, если флаги компиляции различны. Используя генератор make для вашего проекта CMake, вы можете получить выходные данные ассемблера и препроцессора следующим образом:

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