You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake中处理汇编文件:添加.s文件至二进制构建的疑问

解决CMake中添加汇编.s文件到二进制构建的问题

我之前也碰到过一模一样的问题——CMake对汇编文件的处理逻辑确实和C文件不一样,直接把.s文件丢进add_executable里大概率会报错。不过别担心,有几个简单的方法能搞定这个问题:

方法一:给汇编文件显式标记语言

你可以先告诉CMake这个.s文件属于汇编语言,之后就能像添加C文件一样正常使用它了:

# 标记你的汇编文件为ASM语言(默认对应GNU汇编器GAS)
set_source_files_properties(your_assembly_file.s PROPERTIES LANGUAGE ASM)

# 把C文件和标记后的汇编文件一起加入可执行目标
add_executable(your_target_name
    ${ALL_C_FILES}
    your_assembly_file.s
)

如果你的汇编代码是用NASM写的,记得把ASM改成ASM_NASM,同时要确保CMake能找到NASM编译器。

方法二:提前开启汇编语言支持

更省心的方式是在CMakeLists.txt开头直接开启汇编语言支持,这样CMake会自动识别.s文件,不用逐个标记:

# 开启汇编语言支持(默认适配GAS)
enable_language(ASM)
# 如果用NASM的话就改成:enable_language(ASM_NASM)

# 之后直接把汇编文件和C文件一起添加即可
add_executable(your_target_name
    ${ALL_C_FILES}
    your_assembly_file.s
)

额外注意点

  • 不同汇编器的语法差异很大(比如GAS和NASM),一定要确保enable_language指定的语言和你的汇编文件匹配。
  • 如果汇编文件需要特殊编译选项,可以用set_source_files_properties单独设置:
set_source_files_properties(your_assembly_file.s PROPERTIES COMPILE_FLAGS "-your-custom-asm-flag")

内容的提问来源于stack exchange,提问作者Kennedy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:13:38