0

我正在使用 windriver 编译器开发嵌入式项目 根据编译器设计,obj 文件(crt0.o)具有起点(包含“main”)。在我的项目中,我们编写了自己的汇编文件(crt0.s)。现在我想把它编译成 crt0.o 并将其用于链接。我尝试了以下方法,

file(GLOB src_pbl ${BOOT_DIR}/pbl/src/.c
                  ${BOOT_DIR}/pbl/src/crt0.s
                  ${BOOT_DIR}/common/FlexCAN/.c)
add_executable(pbl ${src_pbl})

但它不起作用。crt0.s 文件没有被编译成 crt0.o 文件。链接器从默认编译器路径中获取 crt0.o 文件。

我是否将 .s 文件正确传递给目标?

4

1 回答 1

0

If you haven't already you need to enable_language(ASM) for your project, or one of the other assembly compilers ie ASM_ATT or ASM_MASM etc. This has to be done before the project function.

Also don't use file(GLOB), use target_sources instead.

I do it like this:

enable_lanuage(ASM)

project(${METADATA_NAME})

target_sources(${PROJECT_NAME}
    PRIVATE
        #
        #   assembler
        #
        ${CMAKE_CURRENT_LIST_DIR}/_start.s

        #
        #   c++
        #
        ${CMAKE_CURRENT_LIST_DIR}/Main.cpp
)
于 2021-02-04T19:18:17.790 回答