cmake学习
静态库
在编译过程中静态链接的
浪费空间:复制,包括编译出来的体积、运行体积
动态库(共享库)
在程序装载时或运行时被动态链接
动态库与使用动态库的程序就在编译期做到了解耦
多个程序也可以共享一个动态库
任何程序都能够在运行时将同一个动态库的目标代码动态链接到自己的程序中执行,而且这份动态库的代码在内存中可以只装载一份
cmake
跨平台、开源
用于构建、测试和打包软件
CMake一般特指用于构建项目的CMake工具及其使用的CMake脚本语言
CMake的配置文件是平台无关且编译器无关的,能够做到一次编写,到处编译
生成原生的Makefile和工作空间:CMake本身并不实际调用编译器和链接器等,而是根据配置生成Makefile或者其他构建工具的配置文件,通过它们来实际调用各种命令完成构建
“元构建工具”,或者说是“构建工具的构建工具”。毕竟,它自己不会构建程序,而是指导其他构建工具来构建程序
cmake脚本语言
“元构建工具”,或者说是“构建工具的构建工具”。毕竟,它自己不会构建程序,而是指导其他构建工具来构建程序
CMake脚本语言是领域特定语言(Domain Specific Language,DSL),即专注于某个应用程序领域的计算机语言。对于CMake来说,它所专注的便是构建这个领域
CMake默认是用于构建任务的,如果想让它像脚本语言一样执行需要指定-P参数
比如,创建一个Cmake.cmake文件,写message(hello, CMake!)
在终端运行:cmake -P Cmake.cmake
对于跨平台的命令行中的目录分隔符,统一采用“/”
cmake基础语法
使用CMake工具构建项目的第一步是编写CMake目录程序
目录程序主要用于描述项目的结构,包括对构建目标的定义及其相互依赖关系的定义等
在CMake目录程序中还可以检测系统环境来配置项目的编译条件、生成源文件等
CMake目录程序需要使用CMake脚本语言来编写