| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> Liunx下的Cmake编译C/C++程序方法精要 -> 正文阅读 |
|
[C++知识库]Liunx下的Cmake编译C/C++程序方法精要 |
前言????????我们在很多第三方库中都能够看到CMakeLists.txt的身影。这就是我们熟悉的Cmake编译方法所需要的文件。本篇博客就来讲解一下此文件大致需要如何撰写和使用。如果后续有需要,会再写个《详解》。 ????????本例程是笔者项目中所用的内容,所以运行环境是Jetson Nano Ubuntu 20.04。 CMakeLists.txt文件内容结构及其写法①说明本项目最低cmake配置要求
②说明本项目名称和版本信息
这里,这个项目名就是CmakeTestProject。版本号为0.1.0 ③配置编译标准,例如C++标准,C标准,编译模式debug还是release,等等。
举个例子,就是这样。例如第四排表示 用C++11标准,第五排表示用debug模式。 关于set()这个指令方法内容量是比较大的,能实现很多功能的设置,例如,设置项目生成可执行文件的路径。这在此处就不做详解了,其他博文也有挺多,不过好像讲得不是那么通俗易懂。 set还可以用做变量定义,例如,我要将 根目录下的gen 路径定义为GEN_DEST变量名
此处这个${CMAKE_CURRENT_SOURCE_DIR}表示项目的根目录。就是CmakeList.txt存放的这一级目录。 ④项目中所用到的库文件引用。这部分只会涉及.c和.cpp文件
例如:
这里就是讲后面路径下的所有.cpp或.c文件包含进前面这个变量里。 ⑤引用头文件。这部分就只涉及.h和.hpp文件
?例如:
这里就可以不用具体指定文件了。 ⑥为了方便阅读,集合一下前面所用的file内容。就是set一下
把第④步骤的内容集合一下,合为一个变量叫ALL_COMPILE_SRC(也可以用其他变量名)。 ⑦链接动态库,如果没有需要引用的动态库,此步骤可以省略,不过笔者项目需要:
也就是
?⑧将源代码添加到此项目的可执行文件
也就是
?⑨将目标文件与库文件进行链接
也就是
完整的代码示为了方便同学们理解,此处做个完整的示例
编译接下来就开始见证编译时刻了。 在项目根目录下,创建个build文件(为啥是build呢,笔者认为应该是行业规范吧)
到该build路径后,开始预编译,再编译
make完后,在build目录下就应该会有可执行文件了! 简评? ? ? ? 为了不要让同学们有傻瓜式照搬的思想,我还是以我的这个实际情况来讲述的,同学们需要自行发散性思考,举一反三,学到了,才是自己的。 |
|
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/24 4:32:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |