Скомпилировать и связать два файла с помощью 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, я оставлю чтение вам.