首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在CMake中为不同的体系结构编译不同的程序集文件?

如何在CMake中为不同的体系结构编译不同的程序集文件?
EN

Stack Overflow用户
提问于 2022-05-10 06:46:26
回答 1查看 91关注 0票数 0

如何在CMake中为不同的体系结构编译不同的程序集文件?例如,我有x86-64的x86_64.S,x86-32的x86_32.S,ARMv8的ARM7.S,ARMv8 AArch64的AArch64.S。如何只为目标体系结构编译一个程序集文件?

EN

回答 1

Stack Overflow用户

发布于 2022-05-10 16:16:30

编辑:正如@KamilCuk所提到的,没有必要使用add_custom_command() cmake可以自动检测如何管理源文件。

代码语言:javascript
复制
add_executable(my_exec main.c out.o)

if( CMAKE_SYSTEM_PROCESSOR MATCHES "arm" )
    target_sources(my_exec ARMV7.S)
elseif( CMAKE_SYSTEM_PROCESSOR MATCHES "x86" )
    target_sources(my_exec x86_64.S)
endif()

根据这个答案How to detect target architecture using CMake?,您可以根据体系结构添加一个自定义命令。以下几点可有所帮助:

代码语言:javascript
复制
if( CMAKE_SYSTEM_PROCESSOR MATCHES "arm" )
    add_custom_command(
        OUTPUT out.o 
        COMMAND as -o out.o ARMV7.S 
        DEPENDS ARMV7.S
    )
elseif( CMAKE_SYSTEM_PROCESSOR MATCHES "x86" )
    add_custom_command(
        OUTPUT out.o 
        COMMAND nasm -o out.o x86_64.S
        DEPENDS x86_64.S
    )
endif()

add_executable(my_exec main.c out.o)

根据你的需要调整条件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72181762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档