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 超级详细的教程,可以去看看!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值