本文作者:黄邦勇帅(原名:黄勇),QQ:42444472 (读者意见可发至QQ)
本系列文章是对**《C++语法详解》和《Qt5.10 GUI完全参考手册》**的增补,以增加读者对构建C++程序底层的了解。
主要对Makefile和CMake进行讲解,文章由浅入深,浅显易懂,看似简单却很有深度,是一本难得的比较全面的深入且细致的讲解Makefile和CMake的文章。
本系列文章主要参考文献为Microsoft官方文档,GNU make官方文档,CMake官方文档。
本文摘自本人所作《CMake、Makefile指南》
百度网盘地址
链接:https://pan.baidu.com/s/1ynEyr3Sqhv1SWvxmE5RLHQ?pwd=w9v3
提取码:w9v3
由于本人能力有限,文中难免有错漏之处,望广大读者指出更正,不胜感激
本文为原创文章,转载请注明出处,并注明转载自“黄邦勇帅(原名:黄勇)”,本文作者拥有完全版权
本文使用的工具及其版本情况
本文使用的操作系统为windows10 22H2(64bit)
cmake的版本为CMake 3.27.0-rc4
本文使用mingw32-make生成器,其版本为GNU Make 4.2.1。
本文使用的编译器为VC++,其版本为Visural Studio 2022,主要使用其中的cl、link等命令工具。编译器由CMake根据当前系统自动选择,若要指定自已的编译器,则需要手动配置比较多的CMake变量,详见对交叉编译和工具链的讲解。
第13章 CMake find_package()命令(查找包)
13.1 前提基础知识
13.1.1 何为包?
1、包可以简单的理解为含有一系列文件的集合,可将其类比为一个文件夹或压缩文件。因此,一个与程序有关的包通常是含有头文件(如.h)、静态库文件(如.lib)、动态库文件(如.dll)、与编译参数有关的文件、使用手册等文件的集合,所以,包的形式可以是一个文件夹、压缩文件、也可以是一个安装程序,只要其中包含有所需的文件即可,本文所指的包是以文件夹形式存在的包。由此可见,我们想要创建一个自已的包是非常容易的,只需将需要的文件放入一个文件夹中即可,该文件夹便是包。
2、包由谁提供?包通常由第三方提供,CMake不提供包。当然,我们也可以自已创建一个包。
13.1.2 CMake包
13.1.3 怎样编写CMake包
13.1.4 CMake包由谁提供
13.1.5 find_package()命令的作用
13.1.6 find_package()命令的格式及搜索模式
13.2 find_package()基本命令
13.3 find_package()完整命令
13.3.1 find_package()完整命令语法及基本参数
13.3.2 配置模式的搜索目录
13.3.3 配置模式的搜索前缀及搜索顺序
13.3.4 搜索指定根目录下的子目录
13.3.5 处理版本信息及版本文件变量
13.3.6 包(文件)接口变量
13.3.7 find_package()命令中各变量小结
13.4 使用CMake自带的模块CMakePackageConfigHelpers生成配置文件和版本文件
13.4.1 configure_package_config_file()命令
13.4.2 使用write_basic_package_version_file()命令生成版本文件
读者可自行打开生成的文件查看其中的内容,这里就不列出了。
④、若在本示例中将兼容性设置为SameMinorVersion,则生成的ttConfigVersion.cmake文件的内容如下
读者可自行打开生成的文件查看其中的内容,这里就不列出了。
参考文献:CMake官方帮助文档
作者:黄邦勇帅(原名:黄勇)