CMake个人理解和使用

打印 上一主题 下一主题

主题 881|帖子 881|积分 2643

前言

CMake是一个构建工具,通过它可以很容易创建跨平台的项目。通常使用它构建项目要分两步,通过源代码生成工程文件,通过工程文件构建目标产物(可能是动态库,静态库,也可能是可执行程序)。使用CMake的一个主要优势是在多平台或者多人协作的项目中,开发人员可以根据自己的喜好来使选择IDE,不用受其他人工程配置的影响,它有点像跨平台的IDE,通过它配置好相关设置之后,可以在多个平台无缝衔接,提高开发效率。
最简单的CMake工程

项目搭建

一个用CMake来管理的项目,其项目根目录通常会包含一个CMakeLists.txt的文件,当然子目录可能也有,这种情况我们稍后再说。我们先从最简单的项目开始。以下就是一个最简单的工程示例:
  1. CMakeProject
  2. |    CMakeLists.txt
  3. |    main.cpp
复制代码
这就是完整的可以跑起来的最小项目了。按照顺序,我们来看看文件里的内容
CMakeLists.txt
  1. # 设置版本号
  2. cmake_minimum_required(VERSION 3.10)
  3. # 设置项目名
  4. project(CMakeProject)
  5. # 设置产物和源码的关联
  6. add_executable(${CMAKE_PROJECT_NAME} main.cpp)
复制代码
说明:

  • CMake中命令不区分大小写
  • 以#开始的是备注
  • 引用变量语法${变量名}
所以文档中真正的有效内容就三行,

  • cmake_minimum_required(VERSION 3.10)设置了CMake支持的最低版本,VERSION是参数名,后面是版本号,可以根据自己的需要修改。 注意参数名和参数是以空白符分隔的,不是逗号, 不然会报错。
  • project(CMakeProject)CMake中字符串可以带引号或者不带,效果是一致的,这一行就是配置了项目名,如生成的Visual Studio的工程名就是依据这个名字来的。
  • add_executable(${CMAKE_PROJECT_NAME} main.cpp)
    才是真正管理源码和目标产物的地方,这里我们使用了引用变量的写法,而文件中没有定义这个变量,说明这个变量存在于CMake中,在CMake还有很多预定义的变量,我们可以直接通过这种方式引用,上面的写法是将项目名设置为产物的名字,当然也可以直接填字符串,取个另外的名字都是可以的。后面的main.cpp则是用来生成产物的源码路径,这就是CMake最灵活的地方。源码路径可以是多样的,查找出来的,直接写的,相对路径,绝对路径都可以。 多个源码的话就用空白符分隔,依次写就行了。
    在上面的配置文件中,我们配置了它的源文件为main.cpp,我们想通过它来生成一个可执行的程序,内容也很简单:
[code]#include int main(){        std::cout
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

忿忿的泥巴坨

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表