32

我正在使用 eclipse 构建一个混合了汇编代码和 C 源文件的 avr-gcc 项目。我想摆脱 eclipse 的自动生成文件,因为我需要将一些过程自动化到生成文件中以及出于其他原因。

我以前使用过 cmake,我对它很满意,所以我想尝试使用它来编译我的源文件。一切都按预期使用 C 源代码运行。问题是最后我需要编译一些汇编文件(实际上是2个)并将它们添加到目标中。

我用谷歌搜索,但我没有找到这样做的方法。有人知道如何做到这一点?

问题是在eclipse中我有-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

4

2 回答 2

33

CMake 支持开箱即用的汇编程序。请确保在您的项目中启用“ASM”语言。如果汇编源文件需要预处理,还要设置源文件的编译选项:

project(assembler C ASM)
set_property(SOURCE foo.s APPEND PROPERTY COMPILE_OPTIONS "-x" "assembler-with-cpp")
add_executable(hello foo.s bar.c)
于 2013-02-28T15:22:09.453 回答
5

根据您的解决方案,最简单的解决方案之一是这个单行:

SET(CMAKE_ASM_FLAGS "${CFLAGS} -x assembler-with-cpp")
于 2015-03-16T01:07:34.523 回答