0

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

我已经搜索了 cmake 的文档并在 Google 上搜索了很多时间,尽管我已经将 cmake 中的一些变量列入了候选名单,这些变量在这种情况下可能被证明是有用的,但我找不到任何解释如何实现这一点的示例。

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

4

1 回答 1

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 会变得更加困难。最好的观察地点在这里。由于示例和说明太长,无法在 SO 答案框中复制,因此我将阅读留给您。

于 2014-09-18T15:42:07.023 回答