Скомпилировать и связать два файла с помощью cmake?

У меня есть два файла в моем проекте.
Один - это файл.c, другой - файл.asm. Сначала я компилирую оба файла в два объектных файла ".o", а затем соединяю их вместе, используя собственный скрипт компоновщика.
В настоящее время я использую простой скрипт bash с ручными командами для сборки проекта, но, поскольку ожидается, что размер проекта увеличится, я подумывал о том, чтобы перенести проект на использование cmake в качестве основной системы сборки.

Я долго искал документацию по cmake и гуглил, хотя я включил в список некоторые переменные в cmake, которые могут оказаться полезными в этом случае, я не могу найти пример, объясняющий, как этого добиться.

Кто-нибудь может предоставить мне краткий пример кода о том, как мне добиться этого?

1 ответ

Решение

Вы просили пример? Вот один из вики cmake

set(mySrcs foo.c bar.c)

set(can_use_assembler FALSE)

# test wether it is a x86 machine and as/gas is available
if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i.86")
   enable_language(ASM-ATT)
   if(CMAKE_ASM-ATT_COMPILER_WORKS)
      set(can_use_assembler TRUE)
      set(mySrcs ${mySrcs} codec_i86.s)
   endif(CMAKE_ASM-ATT_COMPILER_WORKS)
endif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i.86")

# no assembler found
if(not can_use_assembler)
   set(mySrcs ${mySrcs} codec_generic.c)
endif(not can_use_assembler)

add_executable(player ${mySrcs})

Из-за того, как работает CMake, сборка и компоновка группируются в один шаг (по крайней мере, с точки зрения программиста). Так add_executable автоматически обрабатывает все для вас.

Если вы хотите включить скрипт компоновщика, это усложнит CMake. Лучшее место, чтобы посмотреть на это здесь. Так как примеры и инструкции слишком длинные, чтобы их можно было скопировать в поле ответа SO, я оставлю чтение вам.

Другие вопросы по тегам