| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 【CMake】CMake学习记录 -> 正文阅读 |
|
[C++知识库]【CMake】CMake学习记录 |
我们在编写c或者c++的时候,通常都比较喜欢用IDE工具去开发,然后点击编译以及运行,一键式~但是,其中的编译过程我们就不得而知了!这时候就有小伙伴说!那就用g++进行编译呗! g++编译如下:创建一个test.cpp文件,内容如下:
进行编译!(-o 后面接着输出的名称,也就是可执行文件,如果不写-o的话,默认是a.out)
执行!
这样的话,确实也能进行编译!但是如果多个文件要编译呢?岂不是运行多次g++呢?当然不需要这么复杂!make即可解决!只需编写makefile文件即可实现多个文件编译!那就试下make编译呗! make编译如下:我们先创建2个文件,一个main.cpp 存放main函数进行调用,一个test.cpp 编写代码,再加上一个test.h 头文件 test.cpp代码如下:
?我创建了一个DEMO类,然后里面加入了一个函数。 test.cpp代码如下:
main.cpp代码如下:
然后编写一个makefile文件(这个是重点!)
?分析下makefile文件: start块的内容就是我们要编译的内容,分别编译了test.o和main.o文件,然后在将这两个文件编译输出名为demo的文件 clean块的内容是后续要清除中间文件 开始编译:
我们可以看到该目录下生成了以下这些: 我们可以将中间文件清除掉,运行:
这时候我们的中间文件就没啦 运行可执行文件:
? 但是发现没有?如果工程文件内容特别多的话,岂不是makefile中要一个个都写上,这不整废了!Don't worry!这时候就要请出我们今天的主角,CMake!!! 我们只需编写CmakeLists.txt文件,然后即可一键生成makefile文件,然后再进行编译即可! 创建一个CMakeLists.txt
分析以下CMakeLists.txt文件: 第一行 工程名,其实第一行应该写cmake_minimum_required(VERSION 3.16) 这个是cmake版本声明,不写也没事,只会警告而已,如下: 第二行 包含头文件全局路径,因为我们的头文件都在根目录,因此写${PROJECT_BINARY_DIR} 表示同级目录 第三行 添加依赖库,用test表示test.cpp 第四行 添加可执行文件,最终生成可执行文件为demo 第五行 将可执行文件和依赖库进行连接 开始执行:
?瞧这个就多了个警告!(问题不大可以继续运行,追求完美修改下文件) 修改如下:
再次运行: ?我们看下多了什么文件 ?这时候多了Makefile文件啦!我们在进行make编译
执行可执行文件
?这样我们就搞定啦! 最后!为了使文件有点工程的样子,如下所示: (如果tree没反应,就sudo apt install tree) 我们可以看到一个完整的工程包括如图所示,build文件夹存放中间文件,src文件夹存放cpp一些文件 最外部的CMakeLists.txt代码如下:
add_subdirectory(src bin)? ?是将src生成的二进制文件放在bin文件夹中 src内的CMakeLists.txt代码如下:
我们进入build文件夹中进行cmake cmake .. 表示编译外部文件,这时候我们就可以看到build文件夹中存放的中间文件 ? 这时候我们可以运行下Makefile文件 ?? ?执行可执行文件!(可执行文件在bin文件夹中) ? |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 23:43:47- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |