cmake是一个跨平台、开源的构建系统。它是一个集软件构建、测试、打包于一身的软件。它使用与平台和编译器独立的配置文件来对软件编译过程进行控制。

Cmake的所有语句都写在一个CMakeLists.txt的文件中,Cmake运行之后就会产生我们想要的makefile文件,然后再直接make就可以编译出可执行程序或者动态库。所以基本步骤就只有两步:(1)cmake生成MakeLists.txt文件;(2)make执行编译工作。

下面记录一下使用CMakeList的一些常用语句:

cmakelist简介

CMake是一个跨平台的开源构建工具,用于自动化管理软件构建和编译过程。与传统的Makefile相比,CMake提供了更简洁、更易于维护的配置文件,并支持生成各种不同构建系统所需的原生构建脚本(例如Makefile、Ninja等)。

对于很多开发者来说,编写CMakeLists.txt可能是一项具有挑战性的任务,但理解其重要性和优势,以及学会正确使用它,将极大地提高项目的可移植性和可维护性。

CMakeLists.txt文件实际上是一个文本文件,其中包含了描述项目如何构建和编译的指令。这些指令可以用来设置项目名称、版本号、源文件列表、头文件搜索路径、链接库依赖关系等等。

编写CMakeLists.txt需要了解一些基本指令,以下是一些常见的指令示例:

  • cmake_minimum_required:指定最低CMake版本。
  • project:设置项目名称和版本号。
  • add_executable:定义一个可执行文件的目标,并列出源文件列表。
  • add_library:定义一个库的目标,并列出库的源文件列表。
  • target_include_directories:添加头文件搜索路径。
  • target_link_libraries:指定目标链接到的库。

通过编写CMakeLists.txt,我们可以轻松配置各种构建选项,例如编译器标志、链接库、安装规则等。CMake还支持生成多种平台和编译器所需的原生构建文件,例如Unix的Makefile,Windows的Visual Studio解决方案等。

使用CMake可以大大简化跨平台开发的过程,提高代码的可移植性和重用性。通过正确编写CMakeLists.txt,您可以更专注于代码编写,而不必为每个平台和编译器单独维护构建脚本。

1 cmake_minimum_required

作用:指定cmake最小版本

如下图所示:
在这里插入图片描述
指定cmake的最小版本为2.8.0

2 SET

作用一般有两个:

1、设置变量的值
2、定义宏

3 project

设置项目名称

4 define_property

功能:

定义和记录自定义属性。在作用域中定义一个用于set_property()和get_property()命令的属性。它主要用于定义属性的初始化或继承方式。

语法:

define_property(<GLOBAL | DIRECTORY | TARGET | SOURCE |

                 TEST | VARIABLE | CACHED_VARIABLE>

                 PROPERTY <name> [INHERITED]

                 [BRIEF_DOCS <brief-doc> [docs...]]

                 [FULL_DOCS <full-doc> [docs...]]

                 [INITIALIZE_FROM_VARIABLE <variable>])

主要参数说明:

第一个参数确定应在其中使用属性的范围类型。它必须是下列之一:

GLOBAL    = associated with the global namespace

DIRECTORY = associated with one directory

TARGET    = associated with one target

SOURCE    = associated with one source file

TEST      = associated with a test named with add_test

VARIABLE  = documents a CMake language variable

CACHED_VARIABLE = documents a CMake cache variable

PROPERTY:属性关键字

<name>:要定义的属性名称

BRIEF_DOCS:关键字,表示简要文档

<brief-doc>:简要文档与属性关联的字符串

FULL_DOCS:关键字,表示完整文档

<full-doc>:完整文档与属性关联的字符串

示例:

# Use a global property to collect all application libraries

define_property(GLOBAL

PROPERTY app_libraries

BRIEF_DOCS "app libraries"

FULL_DOCS "app libraries" )

说明:为所有应用库设置全局属性“app_libraries”,关联字符串为“app libraries”

5 include

include指令用来载入并运行来自于文件或模块的CMake代码

6 project

设置项目名称

7 add_executable

使用指定的源文件来生成目标可执行文件

8

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐