CMake教程系列

您所在的位置:网站首页 cmake教程详解 CMake教程系列

CMake教程系列

2023-03-13 19:20| 来源: 网络整理| 查看: 265

一个最小的cmake配置包含什么?

来让我们看看下面的代码:

cmake_minimum_required(VERSION 3.0) project(sample CXX) add_library(sample sample.cpp) add_executable(sample_exe sample_exe.cpp)cmake_minimum_required

该函数规定了此工程使用的cmake最低版本。

由于cmake仍在不断发展,每个版本均会修改一些函数参数,也会添加更多函数。此函数的作用是为了防止使用版本过低的cmake来配置导致非预期错误。

project

该函数声明了此项目的名称。

由于一个项目中可能包含多个库或多个可执行程序,在子库/子可执行程序中禁止使用与该函数声明中的相同的名称。

该函数第二个参数为该项目的代码类型。可声明 CCXXC CXX。对应的代表了纯c工程,纯c++工程与混合工程。

注意:声明的代码类型影响了编译器的选取。

add_library / add_executable

该函数声明了添加一个库或添加一个可执行程序。

第一个参数代表了该库/可执行程序的名称。在没有明确声明生成二进制文件名时,也代表了对应生成的二进制文件名。

第二个参数代表了要生成的二进制使用的源文件。这里可以使用列表变量,也可以直接添加源文件名称。当然,也可以在后续使用函数 target_source 添加源文件。

当然,还可以添加其他关键字例如:

SHARED 声明该库仅被作为动态库生成STATIC 声明该库仅被作为静态库生成OBJECT 声明该target仅生成中间binary文件,以供其他target使用INTERFACE 声明该库仅是一个接口而并没有属于自己的binaryALIAS 声明该库仅是其他库的别名IMPORTED 声明该库不需要构建,而是已被导入具体配置。此方式一般存在于依赖提供的配置中。

上述关键字只能在 add_library 中被声明。

在未声明前五个关键字时,库的构建类型根据 BUILD_SHARED_LIBS 变化。

注意:声明win32可执行程序时,应在add_executable中程序名称后添加关键字 WIN32 。

关键字 project

如上面所讲,每个cmake项目均应当声明此关键字,这影响了整个项目的属性。cmake也会提供项目对应的各个变量,例如:

PROJECT_NAME 项目名称PROJECT_SOURCE_DIR 项目源码根目录PROJECT_VERSION 项目版本PROJECT_BINARY_DIR 项目生成的临时二进制目录,用于存放配置/编译中间文件。关键字 target

target在cmake中是一个很重要的概念,你应当将它理解为一个object。它包含了例如以下内容:

相关的源文件列表相关的编译选项相关的依赖库相关的头文件路径列表相关的库文件路径列表相关的其他属性

所以,你在后续可以使用这个target名称做任何事情。对应的cmake函数会使用该名称自动提取函数需使用的属性值。

关键字 PUBLC PRIVATE INTERFACE

这些关键字是用于搭建依赖关系。

PUBLIC 声明该关键字后续的值在构建该target时使用,并向下游提供。PRIVATE 声明该关键字后续的值仅在构建该target时使用,不向下游提供。INTERFACE 声明该关键字仅向下游提供,不在构建该target时使用。

以上就是使用cmake编写的工程配置最小示例,是不是很简单?

在后续文章中,我会逐渐的介绍其他cmake函数。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3