CMake处理项目流程(处理项目时究竟干了些什么事情)

AI-摘要
Tianli GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
CMake处理项目流程(处理项目时究竟干了些什么事情)
幻雪总体流程
CMake 的流程有以下的步骤
了解过程会更好地帮助我们去理解整个 cmake 在干什么,debug 的时候更容易去定位错误
例如当对于任意合法的 CMakelist.txt 执行 cmake --build .
Configuring done 配置完成
Generating done 生成完成
Build files have been written to… 构建文件已写入…(说明构建成功)
如果构建不合法则会出现
如果是配置和生成出现错误,那么就一定是 CMake 配置或 CMakelist 配置没有配置好
编译过程
预处理
g++ -E main.cpp -o main.i 预处理
编译
g++ -S main.i -o main.s 编译
经过预处理和编译我们得到如下文件
这些也不必去全部一步一步进行,可以直接走最后一步从而走完全部过程
如下,但是只会得到最后的 .o 文件
汇编
g++ -c add.s -o add.o
汇编成机器码文件
链接
g++ main.o add.o -o main
总结
CMake .c 或 .cpp 文件,在预处理阶段会引入 .h 文件生成包含所有需要的代码 .i 文件,经过编译生成汇编语言构成的 .s 文件,再汇编成目标所需的机器码 .o 文件,将 .o 文件集体打包就是 .a 静态库文件/ . So 动态库文件,最后链接成 无后缀/.out 的可执行文件
| 描述 | Linux 后缀 | Windows 后缀 |
|---|---|---|
| 汇编源文件 | . S 或 .S | . Asm |
| C/C++ 源文件 | . C / .cpp | . C / .cpp 或 .cc |
| C/C++ 头文件 | . H | . H |
| 目标文件 | . O | . Obj |
| 静态库文件 | . A | . Lib 或 .a |
| 动态库/共享库文件 | . So | . Dll |
| 可执行文件 | *(无后缀) 或 .out | . Exe |
| 脚本文件 | *(无后缀) 或 .sh | . Bat 或 .ps 1 |
| CMake 配置文件 | CMakeLists. Txt | CMakeLists. Txt |
| CMake 缓存文件 | CMakeCache. Txt | CMakeCache. Txt |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果

![[Pasted image 20240107134748.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/adcafcassefsevrbyhbdrt.png)
![[Pasted image 20240107134926.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/gvbseryhntuyjij.png)
![[Pasted image 20240107160422.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/evtgrbdhuyjwraeftgbrhe.png)
![[textgif 1.gif]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/textgif.gif)
![[Pasted image 20231223205158.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/gsdrghdthrtdjhftuty.png)
![[Pasted image 20231223205452.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/dafrgtfjhnmyrtdthsthstrth.png)
![[Pasted image 20231223205647.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/awdfvsfgvsgvsregvrse.png)
![[Pasted image 20231223211045.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/faefwefewagvwe.png)
![[Pasted image 20231223211312.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/dfsefgvshtuufjj.png)
![[Pasted image 20231223211523.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/awdiuguikluogiou.png)
![[Pasted image 20231223211601.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/asdfegsrghrthtfghrt.png)
![[Pasted image 20231223211751.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/adfsefgvrsgbrtgbehrgbszrsgb.png)
![[Pasted image 20231223212517.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/sadasfsgbreertgserg.png)
![[Pasted image 20231223212456.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/adjwjojoawjocikjkwdla.png)
![[Pasted image 20231223213434.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/adhwhakjhkjzhnjdkajsdk.png)
![[Pasted image 20231223213737.png]](https://testingcf.jsdelivr.net/gh/huanxueshengmou/picture-host/sajdoiiojijdoijwoijdoiajwoid.png)


















