2013-02-28 3 views
10

Я использую eclipse для создания проекта avr-gcc, который смешивает код сборки и исходные файлы C. Я хочу избавиться от генерации автоматического создания файла eclipse, потому что мне нужно автоматизировать некоторые процессы в make-файлы и по другим причинам.Смешивание C и сборочные источники и сборка с cmake

Я использовал cmake несколько раз назад, и я был доволен этим, поэтому я хочу попытаться скомпилировать мои исходные файлы, используя его. Все работает так, как ожидалось, с источниками C. Проблема в том, что в конце мне нужно скомпилировать некоторые файлы сборки (фактически 2) и добавить их в цель.

Я googled вокруг, но я не нашел способ сделать это. У кого-то есть идея, как это сделать?

Проблема заключается в том, что в затмении у меня есть -x ассемблере с-каст

добавлен в ССАГПЗ список аргументов. Мне нужно найти способ выборочно добавить этот параметр в стандартный список аргументов 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

Можете ли вы описать более точно в чем проблема с компиляцией источников ассемблера? –

+0

Я отредактировал мое сообщение. посмотрите на новые детали. Я надеюсь, что они будут enougth, чтобы понять, в чем проблема. еще раз спасибо – andyinno

+0

Не понимаю. Вы не хотите использовать создаваемые Eclipse make-файлы и жаловаться на запись в Makefile Eclipse? – vonbrand

ответ

11

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) 
+0

Благодарим вас за ответ. Это не работает в данный момент ... У меня проблема с компиляцией этого файла: https://github.com/metormote/hardware/blob/master/basestation_test/src/asf/xmega/drivers/cpu/ccp.s Если я использую то, что вы написали, файл вызывается непосредственно avr-as. Я думаю, мне нужно вызвать файл, используя avr-gcc, чтобы он предварительно обработал файл. – andyinno

+0

См. Обновленный ответ. – sakra

+0

Благодарим вас за вашу чакра. Я пробовал это: set (ASM_SOURCES \t xmega/drivers/nvm/nvm_asm.s xmega/drivers/cpu/ccp.s ) set_source_files_properties ($ {ASM_SOURCES} PROPERTIES COMPILE_FLAGS "$ {CFLAGS} -x ассемблер-с-cpp") add_executable (xMegaAnalog $ {SOURCES} $ {ASM_SOURCES}) проблема в том, что похоже, что файлы не будут скомпилирован, но просто пропущен. Я не вижу, чтобы они использовали make VERBOSE = 1 – andyinno

2

На основе вашего решения, один из самых простых решений является это один вкладыш:

SET(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp") 
Смежные вопросы