我们日常生活的每一个方面都有计算机软件的存在:它可以为我们触发的闹钟,并每时每刻的为我们提供通信、银行、天气、公交、日历、会议、旅行、相册、电视、音乐流、社交媒体、晚餐和电影预定等服务信息。
软件内部具有一定的层次结构:应用程序是基于框架构建,框架基于开发库,开发库使用更小的库或可执行文件,当然还有更小的组件。开发库和可执行文件通常需要使用源代码进行构建。我们通常只看到最外层,但软件内部需要仔细组织和构建。本书就是使用CMake,对使用源代码构建开发库和可执行文件的项目进行组织。
CMake是一个构建生成器,提供了强大的领域特定语言(DSL)来描述构建系统应该实现的功能。这是CMake的主要优势之一,它允许使用相同的CMake脚本集生成平台原生构建系统。CMake软件工具集,使开发人员可以完全控制给定项目的生命周期:
编写能够在许多不同平台上本地、可靠并高效地运行的软件,对于工业和社会的所有部门都至关重要。软件构建系统就是这项任务的中心。它们是软件开发生命周期管理的关键部分:从孵化和原型开发到测试,一直到打包、部署和发布。
CMake旨在帮助您管理这些操作:如果希望使用CMake管理构建系统的软件开发人员,或者希望能够理解,并能修改其他人编写的CMake代码,那么这本书非常合适您。
我们将讨论以下内容:
CMake管理的项目的工作流发生在许多阶段(time),我们称之为时序。可以简洁地总结如下图:
本书的路线图如下:
第1章,从简单的可执行文件到库,如何配置和使用CMake构建简单的可执行文件和库。
第2章,检测环境,如何使用简单的CMake命令与操作系统和处理器体系结构交互。
第3章,检测外部库和程序,如何简化对项目依赖项的检测。
第4章,创建和运行测试,解释如何利用CMake和CTest的功能来定义和运行测试。
第5章,配置时操作和构建时操作,如何使用CMake在构建过程的不同阶段执行定制化操作。
第6章,生成源码,CMake命令可自动生成源码。
第7章,结构化项目,用于组织您的项目,使它们更易于维护。
第8章,超级构建,解释了CMake超级构建模式,用于管理关键项目的依赖关系。
第9章,混合语言项目,构建不同编程语言混合的项目。
第10章,编写一个安装程序,使用CMake安装项目。
第11章,打包项目,如何使用CPack生成源文件,并将源文件打包,以及构建用于发布的Python和Conda包。
第12章,生成文档,如何使用CMake也生成代码的文档。
第13章,选择生成器和交叉编译,如何使用CMake交叉编译项目。
第14章,测试面板,如何将测试结果报告到在面板上。
第15章,将项目移植到CMake中,将展示实践示例、注意事项和一些技巧,这些将帮助您将项目移植到基于CMake的构建系统中。
这是一本为程序员写的书,我们假设您以具备一定的基本知识,并熟悉以下内容:
本书中使用了许多文本约定。
CodeInText:表示文本、文件夹名称、文件名、模块名称和目标名称中的代码命令。
代码块设置如下:
cmake_minimum_required(VERSION3.5FATAL_ERROR)
project(recipe-01LANGUAGESCXX)
add_executable(hello-worldhello-world.cpp)
任何命令行输入都是粗体的,并在命令前面包含一个$提示符来输入:
为了区分命令行输入和输出,我们将输出设置为非粗体:(当前译本不支持)
NOTE重要的提示会出现该标识。
TIPS提示和技巧会出现该标识。
(PS:原始标识由于在线上观看会使内容错位,观看体验下降,从而换成文字)
我们的书并不是唯一一本涉及CMake的书:
我们欢迎读者的反馈。
内容反馈:电子邮件feedback@packtpub.com,并在邮件主题中提到书名。如果你对本书的任何方面有任何疑问,请发邮件至questions@packtpub.com
勘误表:虽然我们已经尽了一切努力确保我们的内容的准确性,但错误还是会有。如果您在这本书中发现了错误,务必告诉我们,不胜感激。可以访问www.packtpub.com/submit-errata,选择您的图书,单击Errata提交表单链接,并输入详细信息。
盗版:如果您在互联网上发现我们作品的任何形式的非法拷贝,希望提供相应地址或网站名称,我们将不胜感激。请通过copyright@packtpub.com联系我们,并提供该材料的链接。
如果你对名作者感兴趣:如果有一个你擅长的主题,并且你对写作或为一本书做贡献感兴趣,请访问authors.packtpub.com