美文网首页C语言
cmake学习小结

cmake学习小结

作者: HarveyYang777 | 来源:发表于2020-04-20 11:25 被阅读0次

CMake简介

CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个库。 它用配置文件控制建构过程(build process)的方式和Unix的make相似,只是CMake的配置文件取名为CMakeLists.txt。CMake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或Windows Visual C++的projects/workspaces),然后再依一般的建构方式使用。

在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:

  1. 编写 CMake 配置文件 CMakeLists.txt
  2. 执行命令 cmake PATH 或者 ccmake PATH 生成 Makefile(ccmake 和 cmake 的区别在于前者提供了一个交互式的界面)。其中, PATH 是 CMakeLists.txt 所在的目录
  3. 使用 make 命令进行编译

使用举例

目录结构:


./Demo
    |
    +--- main.cc
    |
    +--- sub/
          |
          +--- SubFunctions.cc
          |
          +--- SubFunctions.h

根目录中的 CMakeLists.txt :

# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)

# 项目信息
project (Demo)

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)

# 添加 sub 子目录
add_subdirectory(sub)

# 指定生成目标 
add_executable(Demo main.cc)

# 添加链接库
target_link_libraries(Demo SubFunctions)

子目录中的 CMakeLists.txt:

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_LIB_SRCS 变量
aux_source_directory(. DIR_LIB_SRCS)

# 生成链接库
add_library (SubFunctions ${DIR_LIB_SRCS})

编译项目

在当前目录执行 cmake . ,得到 Makefile 后再使用 make 命令编译得到 Demo可执行文件

自定义编译选项

CMake 允许为项目增加编译选项,从而可以根据用户的环境和需求选择最合适的编译方案

# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)

# 项目信息
project (Demo4)

# 加入一个配置头文件,用于处理 CMake 对源码的设置
configure_file (
  "${PROJECT_SOURCE_DIR}/config.h.in"
  "${PROJECT_BINARY_DIR}/config.h"
  )

# 是否使用自己的 DefineFunctions 库
option (USE_MYDEFINE
       "Use provided  implementation" ON)

# 是否加入 DefineFunctions 库
if (USE_MYDEFINE)
  include_directories ("${PROJECT_SOURCE_DIR}/sub")
  add_subdirectory (sub)  
  set (EXTRA_LIBS ${EXTRA_LIBS} SubFunctions)
endif (USE_MYDEFINE)

# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)

# 指定生成目标
add_executable(Demo ${DIR_SRCS})
target_link_libraries (Demo  ${EXTRA_LIBS})
  1. configure_file 命令用于加入一个配置头文件 config.h ,这个文件由 CMake 从 config.h.in 生成,通过这样的机制,将可以通过预定义一些参数和变量来控制代码的生成
  2. option 命令添加了一个 USE_MYMATH 选项,并且默认值为 ON
  3. USE_MYMATH 变量的值来决定是否使用我们自己编写的 MathFunctions 库

安装和测试

CMake 也可以指定安装规则,以及添加测试。这两个功能分别可以通过在产生 Makefile 后使用 make install 和 make test 来执行

相关链接

官方文档:https://cmake.org/cmake/help/cmake2.4docs.html

相关文章

  • CMake学习小结--变量

    CMake学习小结 参考资料 CGold的Cmake教程 -- 这个教程很新: https://cgold.rea...

  • cmake学习小结

    CMake简介 CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可...

  • cmake学习笔记6-catkin的CmakeList.txt讲

    引用cmake学习笔记-cmakelist.txt创建项目示例cmake的介绍和使用 Cmake实践推荐cmake...

  • CMake学习

    CMake学习 本篇分享一下有关CMake的一些学习心得以及相关使用。 本文目录如下: [1、CMake介绍] [...

  • 教程

    通过例子学习CMake[https://sfumecjf.github.io/cmake-examples-Chi...

  • CMake学习

    CMake学习 参考自《Cmake Practice --Cjacker》 基本语法规则 变量的引用 变量使用${...

  • 学习CMake(一)

    开篇立意,这个系列是为了让我能够更快更好的学习CMake这个工具,学习的资料源于cmake-bulidsystem...

  • 学习cmake

    make cmake是为了支持make的跨平台而出现的。因此,我们首先学习make,可以看这里。 cmake ma...

  • CMake学习

    目录 什么是CMake? linux平台安装CMake CMake的helloworld 1. 什么是CMake?...

  • 学习 cmake

    打包工具 cmake brazel qmake 在 c++圈是比较流行的几款最近学习主流的cmake首先在使用c...

网友评论

    本文标题:cmake学习小结

    本文链接:https://www.haomeiwen.com/subject/zrvpvhtx.html