保留现有项目结构,从子目录全局设置NASM目标格式的CMake问题
解决方案
可以保留当前项目结构,通过以下方式在子目录中全局设置NASM目标格式:
在对应架构的子目录CMakeLists.txt中,使用带
FORCE选项的缓存变量设置命令:set(CMAKE_ASM_NASM_OBJECT_FORMAT "elf32" CACHE STRING "NASM object format" FORCE)把示例中的
elf32替换为你实际需要的目标格式(比如macho64、win32等)。原理:
CMAKE_ASM_NASM_OBJECT_FORMAT是CMake的缓存变量,默认子目录直接用set无法覆盖顶层的缓存值,加上FORCE选项可以强制更新缓存,让后续所有NASM编译任务都使用新设置的目标格式。
注意事项:
- 要确保每个架构子目录的设置仅在对应架构的构建流程中触发,避免不同架构子目录的设置互相干扰(比如通过条件判断,基于传入的架构参数决定是否执行上述设置)。
- 如果子目录是通过
add_subdirectory引入的,务必让设置命令在添加汇编源文件之前执行,确保新格式生效。
内容的提问来源于stack exchange,提问作者Ma_rv
相关产品推荐
相关产品推荐

