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 |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果