Смешивание C и сборочные источники и сборка с помощью cmake
Я использую eclipse для создания проекта avr-gcc, который смешивает код сборки и исходные файлы C.
Я хочу избавиться от генерации автоматического создания файла eclipse, потому что мне нужно автоматизировать какой-то процесс в make файлах и по другим причинам.
Я использовал cmake несколько раз назад, и я был доволен этим, поэтому я хочу попытаться скомпилировать мои исходные файлы, используя его. Все работает так, как ожидалось, с источниками C. Проблема в том, что в конце мне нужно скомпилировать некоторые файлы сборки (фактически 2) и добавить их в цель.
Я googled вокруг, но я не нашел способ сделать это.
у кого-то есть идея о том, как это сделать?
Проблема в том, что в затмении у меня есть -x сборщик-с-cpp
добавлен в список аргументов gcc. Мне нужно найти способ выборочно добавить этот параметр в стандартный список аргументов gcc только для asm файлов. Я ничего не нашел для этого.
заблаговременно
РЕШЕНИЕ:
установить в CMakeLists.txt каждый файл для компиляции в том же списке
enable_language(C ASM)
set ( SOURCES
foo.c
bar.c
foobar.s
)
add_executable(program ${SOURCES} )
в файле Toolchain, который вы должны поместить:
SET(ASM_OPTIONS "-x assembler-with-cpp")
SET(CMAKE_ASM_FLAGS "${CFLAGS} ${ASM_OPTIONS}" )
вторая строка - это просто, если вам нужно передать дополнительные параметры при компиляции asm файлов. Я хотел передать все CFLAGS плюс некоторые ASM_OPTIONS
Ответы
Ответ 1
CMake 2.8 должен поддерживать сборщик из коробки. Просто включите язык "ASM" в свой проект. Если исходный файл ассемблера нуждается в предварительной обработке, также установите флаг компиляции исходного файла:
project(assembler C ASM)
set_source_files_properties(foo.s PROPERTIES COMPILE_FLAGS "-x assembler-with-cpp")
add_executable(hello foo.s bar.c)
Ответ 2
Основываясь на вашем решении, одним из самых простых решений является однострочный:
SET(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp")