使用cmake编译和链接两个文件?

时间:2014-09-18 14:45:36

标签: c cmake linker-scripts

我的项目中有两个文件 一个是“.c”文件,一个是“.asm”文件。首先,我将这两个文件编译成两个“.o”目标文件,然后使用自定义链接描述文件链接在一起 目前,我正在使用带有手动命令的简单bash脚本来构建项目,但随着项目规模的增加,我正在考虑将项目转移到使用cmake作为其主要构建系统。

我已经搜索了cmake的文档并且google了很多时间,虽然我已经在cmake中列出了一些可能在这种情况下有用的变量,我无法找到任何解释如何实现这一点的示例。

任何人都可以向我提供一个简短的示例代码,说明我应该如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

你问了一个例子吗?这是cmake wiki

中的一个
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答案框中复制出来,我将把阅读留给您。