我正在使用eclipse构建一个混合汇编代码和C源文件的avr-gcc项目。 我想摆脱eclipse的自动makefile生成,因为我需要将一些进程自动化到makefile中以及其他原因。
我之前使用过cmake,我很满意,所以我想尝试使用它来编译我的源文件。一切都按预期运行C源。问题是最后我需要编译一些汇编文件(实际上是2)并将它们添加到目标。
我用Google搜索,但我找不到这样做的方法。 有人知道如何做到这一点吗?
问题是我有日食 -x assembler-with-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
答案 0 :(得分:15)
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)
答案 1 :(得分:3)
根据您的解决方案,最简单的解决方案之一是这种单线程:
SET(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp")