CMake学习笔记📒
前言
本人一个小项目就是采用CMake来进行构建的.可以参考参考.
本文主要记录📝本人学习CMake中对与C和C++使用的一些知识点.方便日后复习.如有错误地方还请指正.
介绍
CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个库。 它用配置文件控制建构过程(build process)的方式和Unix的make相似,只是CMake的配置文件取名为CMakeLists.txt。CMake并不直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或Windows Visual C++的projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是CMake和SCons等其他类似系统的区别之处。 CMake配置文件(CMakeLists.txt)可设置源代码或目标程序库的路径、产生适配器(wrapper)、还可以用任意的顺序建构可执行文件。CMake支持in-place建构(二进档和源代码在同一个目录树中)和out-of-place建构(二进档在别的目录里),因此可以很容易从同一个源代码目录树中建构出多个二进档。CMake也支持静态与动态程序库的建构。
“CMake”这个名字是”Cross platform Make”的缩写。虽然名字中含有”make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高端。 它可与原生建置环境结合使用,例如:make、ninja、苹果的Xcode与微软的Visual Studio。
安装&配置
去官方地址下载对应系统和框架并安装即可.
Mac用户推荐:brew install cmake
安装完后,看一下版本号.
确保不低于 3.22.4
Windows用户若提示找不到命令可能需要手动配置路径到PATH环境变量下.

另外,我们需要确保系统内有C/C++的编译工具🔧(mac用户有Xcode就有C的工具🔧链了)
例如 在Linux下需安装gcc或clang等
因为CMake本身不带编译工具🔧.
知识点
语法
cmake_minimum_required(VERSION 3.10) 指定版本
project(armor) 工程名称
set(CMAKE_BUILD_TYPE RELEASE) 指定编译类型
include_directories(include) 添加头文件目录
file(GLOB SOURCE “src/*.cpp” “main.cpp”) 源文件
add_library(armor SHARED ${SOURCE}) 生成动态链接库
add_library(armor STATIC ${SOURCE}) 生成静态链接库
set(PROJECT_LINK_LIBS libarmor.so) 将库文件存到变量中
link_directories(/home/wenda/cmake/demo_4/build) 添加外部库的搜索路径
target_link_libraries(main ${PROJECT_LINK_LIBS}) 链接外部库文件
add_executable(main main.cpp) 将源文件生成可执行文件
示例Demo
命令cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release && cmake --build build --target all
直接拿我的一个推箱子小游戏项目中CMakeLists.txt作为示例Demo吧~
1 | cmake_minimum_required(VERSION 3.22) #设置CMake的最低版本 |
关于静态库,动态库哪些东西懒得写了.关于构建也是.
有机会再补充内容和更新吧~