微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 cmake 中编译程序集.s文件

如何解决在 cmake 中编译程序集.s文件

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

'Insert Data Field
With ActiveSheet.Pivottables("ForwinPivottable").PivotFields("Gross Profit (EUR)")
.Orientation = xldatafield
.Position = 1
.Function = xlSum
.NumberFormat = "#,##0"
.Name = "GP (Eur) "
End With

'Insert Data Field
With ActiveSheet.Pivottables("ForwinPivottable").PivotFields("Export Chargeable Weight (kg)")
.Orientation = xldatafield
.Position = 1
.Function = xlSum
.NumberFormat = "#,##0"
.Name = "Total Charg. Weight "
End With

With ActiveSheet.Pivottables("ForwinPivottable").CalculatedFields
.Add "GP/kg (Eur)","= 'GP (Eur) '/ 'Total Charg. Weight '"
.PivotFields("GP/kg (Eur)").Orientation = xldatafield
End With

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

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

解决方法

如果您还没有为您的项目或其他汇编编译器之一(即 enable_language(ASM)ASM_ATT 等)准备 ASM_MASM。这必须在 project 之前完成{1}} 函数。

也不要使用file(GLOB),而是使用target_sources

我是这样做的:

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
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。