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
相关产品推荐
相关产品推荐

