2013-02-28 27 views
10

我使用eclipse構建混合彙編代碼和C源代碼文件的avr-gcc項目。 我想擺脫eclipse的自動生成文件生成,因爲我需要將一些進程自動化到makefile以及其他原因。混合使用C和彙編源代碼並使用cmake構建

我前幾次使用cmake,我很高興,所以我想嘗試使用它編譯我的源文件。一切按照預期與C源一起運行。問題是,最後我需要編譯一些彙編文件(實際上是2)並將它們添加到目標中。

我搜索了一下,但我沒有找到一個方法來做到這一點。 有人有關於如何做到這一點的想法?

的問題是,在月食我 -x彙編程序與-CPP

加入到GCC參數列表。我需要找到一種方法來選擇性地將此參數添加到標準gcc參數列表中,僅用於asm文件。我沒有找到任何方式來做到這一點。

預先感謝您

解決方案:在的CMakeLists.txt 集合中的每個文件,在工具鏈文件的同一列表

enable_language(C ASM) 

set (SOURCES 
    foo.c 
    bar.c 
    foobar.s 
) 

add_executable(program ${SOURCES}) 

編譯,你應該把:

SET(ASM_OPTIONS "-x assembler-with-cpp") 
SET(CMAKE_ASM_FLAGS "${CFLAGS} ${ASM_OPTIONS}") 

第二行就是如果你需要在編譯asm文件時傳遞額外的選項。我想要通過所有的CFLAGS加上一些ASM_OPTIONS

+1

你能描述更準確編譯彙編源代碼時出現了什麼問題? – 2013-02-28 10:57:41

+0

我編輯了我的帖子。請看看它的新細節。我希望他們明白什麼是問題。再次感謝你 – andyinno 2013-02-28 13:30:11

+0

我不明白。你不想使用Eclipse生成的makefile,並抱怨Eclipse的Makefile文件寫入? – vonbrand 2013-02-28 20:14:11

回答

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 2013-02-28 17:23:56

+0

查看更新的答案。 – sakra 2013-02-28 19:10:56

+0

謝謝你的評論。我試過這個:set(ASM_SOURCES \t xmega/drivers/nvm/nvm_asm.s \t xmega/drivers/cpu/ccp。($ {ASM_SOURCES} PROPERTIES COMPILE_FLAGS「$ {CFLAGS} -x assembler-with-cpp」)add_executable(xMegaAnalog $ {SOURCES} $ {ASM_SOURCES})問題是,它看起來像文件不會是編譯但只是跳過。我沒有看到它們使用make VERBOSE = 1 – andyinno 2013-03-01 08:41:26

2

根據您的解決方案,最簡單的解決方案之一是這樣的一行代碼:

SET(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp")