001.设置项目


一个CMake项目要从一个CMakelists.txt文件开始,该文件定义了应该构建什么、如何构建、要运行什么测试以及要创建什么包。该文件是整个项目独立于平台的描述,之后CMake将其转换为特定构建工具项目文件。

需要注意的是,它只是一个普通的文本文件,可以使用任何文本编辑器编辑之。

第一个需要了解的概念,便是目录。CMake项目往往要区分源码目录,构建目录。源码目录是工程源码所在的地方,版本控制重点关注此处,CMakelists.txt文件就位于其中。而构建过程中产生的对象则需要放置在构建目录中,包括可执行文件、库、测试用例和包都是在构建目录中放置的。CMake还会在构建目录中生成一个CMakeCache.txt文件,里面存放可重用的各种配置信息,暂时不需要关注。

根据构建目录的位置,构建分成两种,源码内构建和源码外构建,下面将详述区别。

源内构建

这种方式并不推荐,顾名思义,这种情况下源码目录和构建目录是相同的。

所有构建输出都与源文件混合在一起,这会导致目录中充斥着各种各样的文件和子目录,使得管理项目源代码变得更加困难,并且存在生成输出覆盖源文件的风险。这也使得使用版本控制系统变得更加困难,因为构建过程中创建了很多文件,源代码管理工具必须知道哪些文件可以忽略,或者开发人员必须在提交过程中手动排除这些文件。源代码内构建的另一个缺点是,清除所有的构建输出,并恢复干净的源码树非常困难。

源外构建

这是一种更加可取的方式,其源码目录和构建目录不同,被称为源外构建。

源代码和构建输出完全分离,从而避免了源内构建遇到的混合问题。源外构建还有一个优点,开发人员可以为同一个源目录创建多个构建目录,以应用不同的构建设置。

一个基本的源外构建项目,目录结构如下:
源外构建
实际上把build目录放在source目录里,也可以避免混合。但这样做并没有什么好处,如果没有充分的理由,还是完全分开的好。

单配置与多配置

在一个build目录里,能生成debug、release等不同配置的目标,就是多配置,相反只能构建一种配置的目标就是单配置。不同的平台,支持的特性并不相同,这一区别造成几个变量的不同,这对某些逻辑判断会有直接的影响,后续再论这一点。

单配置与多配置

生成目标平台的项目文件

使用命令行程序生成项目文件是基本的方式,也可以通过CMake-Gui来生成,且后者要更直观更强大。

一个简单的HelloWorld项目如图
HelloWorld
使用如下命令生成项目

mkdir build
cd build
cmake -G "MinGW Makefiles" ../source

结果如图
结果
结果
使用如下命令构建

cmake --build . --target hello

构建
运行
运行

总结

本文介绍了基本的CMake项目目录结构,以及生成和构建的相关命令,但CMakeLists.txt文件的内容丝毫没有涉及,这将在接下来的文章中详细介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

温铜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值