Смешивание 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")