IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Cmake入门使用 -> 正文阅读

[开发工具]Cmake入门使用

学习C++时候需要做一个小项目,但是无法使用多目录多文件,上网搜索Cmake没用很详细的文字讲解,看过一个up主的视频之后,学习了如何去使用Cmake来进行简单的编译项目。

视频在结尾

1.安装

可以去两个网站下载:

官网(可能需要魔法):CMake

image.png

image.png

之后下载即可,作者这里已经安装,不做演示

GitHub: CMake (github.com)

github安装

image.png

接着在vscode中找到两个插件:Cmake和Cmake Tools,安装Cmake自动安装Cmake Tools

image.png

2.基本使用

如果碰到

2.1单目录多文件编译

创建一个CMakeLists.txt文件,并与main.cpp保存在同一个目录下

目录结构如下:

image.png

.vscode文件夹是配置调试功能的

接着打开CMakeLists.txt文件进行编写

# CMake最低版本号要求
cmake_minimum_required(VERSION 3.1)
# 项目信息
project(Demo1) # 写入工程名
# 指定生成目标
# 生成exe文件名,需要编译的源函数文件名称
add_executable(my_cmake_workerManger main.cpp workerManger.cpp) 

CMakeLists.txt 的语法比较简单,由命令、注释和空格组成,其中命令是不区分大小写的。#符号 后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。

对于上面的 CMakeLists.txt 文件,依次出现了几个命令:

  1. cmake_minimum_required:指定运行此配置文件所需的 CMake 的最低版本;
  2. project:参数值是 ,该命令表示项目的名称是 :Demo1
  3. add_executable: 将名为 main.cpp 的源文件编译成一个名称为 Demo1 的可执行文件。

2.1.1编译项目

在vscode执行,需要使用ctrl+shift+p来执行配置

image.png

image.png

在执行配置之后,会生成一个build的文件夹,里面会有一些配置文件

image.png

生成build之后,在终端使用cd build文件夹,进入build,执行cmake ..命令

**注意:**如果电脑上已经安装了VS,应该会调用微软MSVC编译器,使用(cmake -G “MinGW Makefiles” …)代替(cmake …)即可。
仅第一次使用cmake时使用(cmake -G “MinGW Makefiles” …) 后面可使用(cmake …)

结果如下:

PS E:E:\Program\program\C++\VSC_C++_Projects\Project1> cd .\build\
PS E:E:\Program\program\C++\VSC_C++_Projects\Project1\build> cmake ..
-- Configuring done
-- Generating done
-- Build files have been written to: E:/Program/program/C++/VSC_C++_Projects/Project1/build
PS E:E:\Program\program\C++\VSC_C++_Projects\Project1\build>

接着在命令行输入mingw32-make.exe,编译文件链接文件,结果如下:

image.png

文件结构如下,生成了my_cmake_workerManger.exe

image.png

3.2 多目录,多个源文件(推荐)

创建一个include目录,用于存放头文件,创建一个src目录,用来存放源文件,在创建一个bin目录,将生成的可执行文件存放到这里;将workerManger.cpp,移动到src目录,将workerManger.h移动到include目录,如下图所示:

image.png

并且对于多目录多文件,可以分别在项目根目录以及src目录里各编写一个 CMakeLists.txt 文件方便调用。

打开根目录的CMakeList.txt,写入:

# CMake最低版本号要求
cmake_minimum_required(VERSION 3.1)

# 项目信息
project(Demo) # 工程名

# 指定子目录的CMake源文件
add_subdirectory(src)

添加了一个新命令add_subdirectory这个是用来指定子目录的CMake源文件。

打开src目录下的CMakeList.txt,写入:

# 如果需要进行调试需要设置这个命令
set(CMAKE_BUILD_TYPE Debug)
# 向工程添加多个特定的头文件搜索路径,路径之间用空格分隔
# 相当于指定g++编译器的-I参数
include_directories (${CMAKE_SOURCE_DIR}/include)
# 把当前目录下的源文件存列表存放到变量SOURCES里
aux_source_directory(. SOURCES)
# 指定生成目标
add_executable(${PROJECT_NAME} ${SOURCES})
# 设置生成目标后exe文件存放位置
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/bin)

命令解释:

  • set:设置可执行文件的输出路径(EXCUTABLE_OUTPUT_PATH是全局变量)

    • EXECUTABLE_OUTPUT_PATH :目标二进制可执行文件的存放位置
  • include_directories:向工程添加多个特定的头文件搜索路径,路径之间用空格分隔;相当于指定g++编译器的-I参数

  • aux_source_directory:把当前目录下的源文件存列表存放到变量SOURCES里

  • ${CMAKE_SOURCE_DIR}:最外层CMakeLists.txt所在目录

  • ${PROJECT_NAME}:指定的项目名称

  • ${SOURCES}:调用之前生成的变量SOURCES

接着执行Cmake配置,生成build之后,进入build文件夹,执行cmake ..

image.png

接着在命令行输入mingw32-make.exe,编译文件链接文件,结果如下:

image.png

文件结构如下,生成了Demo.exe

image.png

总结

Cmake在Linux跟Windows上有一些细节上的问题,但是,因为是在vscode上编译,所以基本命令是不变,注意两个系统的一些细节就行。

如果有写的不对的地方,希望能留言指正,谢谢阅读。

参考:

B站up主:xiaobing1016,点进去是视频;老师教的很好,细节很多,感谢!

CMake 入门实战 | HaHack

cmake 从入门到入土_OceanStar的学习笔记的博客-CSDN博客

Linux下CMake简明教程_爱就是恒久忍耐的博客-CSDN博客_cmake 超级详细的教程,可以去看看!

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:48:33  更:2022-09-21 00:52:12 
 
开发: 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年12日历 -2024/12/28 3:09:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计