我的项目中有两个文件 一个是“.c”文件,一个是“.asm”文件。首先,我将这两个文件编译成两个“.o”目标文件,然后使用自定义链接描述文件链接在一起 目前,我正在使用带有手动命令的简单bash脚本来构建项目,但随着项目规模的增加,我正在考虑将项目转移到使用cmake作为其主要构建系统。
我已经搜索了cmake的文档并且google了很多时间,虽然我已经在cmake中列出了一些可能在这种情况下有用的变量,我无法找到任何解释如何实现这一点的示例。
任何人都可以向我提供一个简短的示例代码,说明我应该如何实现这一目标?
答案 0 :(得分:1)
set(mySrcs foo.c bar.c)
set(can_use_assembler FALSE)
# test wether it is a x86 machine and as/gas is available
if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i.86")
enable_language(ASM-ATT)
if(CMAKE_ASM-ATT_COMPILER_WORKS)
set(can_use_assembler TRUE)
set(mySrcs ${mySrcs} codec_i86.s)
endif(CMAKE_ASM-ATT_COMPILER_WORKS)
endif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i.86")
# no assembler found
if(not can_use_assembler)
set(mySrcs ${mySrcs} codec_generic.c)
endif(not can_use_assembler)
add_executable(player ${mySrcs})
由于CMake的工作方式,组装和链接在同一步骤中组合在一起(至少从程序员的角度来看)。因此add_executable
会自动为您处理所有事情。
如果要包含链接描述文件,使用CMake会更加困难。调查它的最佳位置是over here。由于示例和说明太长而无法在SO答案框中复制出来,我将把阅读留给您。