使用VSCode和CMake构建跨平台的C/C++开发环境
2021/4/17 20:26:58
本文主要是介绍使用VSCode和CMake构建跨平台的C/C++开发环境,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
开发流程
- 开发工具
- MinGW
- CMake
- make
- makefiles
- cmake
- CMake生成makefile的原理
- 编写CMakeLists.txt文件是重点
- 开发流程
- 编写调试C/C++程序
开发工具
MinGW
MinGW 提供了一套简单方便的Windows下的基于GCC 程序开发环境。MinGW 收集了一系列免费的Windows 使用的头文件和库文件;同时整合了GNU ( http://www.gnu.org/ )的工具集,特别是GNU 程序开发工具,如经典gcc, g++, make等。MinGW是完全免费的自由软件,它在Windows平台上模拟了Linux下GCC的开发环境,为C++的跨平台开发提供了良好基础支持,为了在Windows下工作的程序员熟悉Linux下的C++工程组织提供了条件。
CMake
make
在VSCode中编写C++程序,只能编译一个源文件,如果需要同时编译多个源文件,那么就需要批处理工具——CMake工具或者Clion(专业的);
make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,而是用类似于批处理的方式——通过调用makefile文件中用户指定的命令来进行编译和链接的。
makefiles
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。
make需要按照makefile中的命令执行!
makefile命令中就包含了调用许多编译器(如我们这里多用到的gcc编译器)去编译某个源文件的命令。
人总是“懒惰的”,makefile在一些简单的工程完全可以人工手写,但是当工程非常大的时候,手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修改。因此我们引入了cmake。
cmake
你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。
CMake就是针对上面问题所设计的工具:它首先允许开发者编写一种平台无关的 CMakeList.txt 文件来定制整个编译流程,然后再根据目标用户的平台进一步生成所需的本地化 Makefile 和工程文件,如 Unix 的 Makefile 或 Windows 的 Visual Studio 工程。从而做到“Write once, run everywhere”。显然,CMake 是一个比上述几种 make 更高级的编译配置工具。一些使用 CMake 作为项目架构系统的知名开源项目有 VTK、ITK、KDE、OpenCV、OSG 等。
CMake这个名字是cross platform make的缩写。虽然名字中含有“make”,但是CMake和Unix上常见的“make”系统是分开的,而且更为高阶。
CMake可以更加简单的生成makefile文件给上面的make用。当然CMake还可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。
一般使用 CMake 生成 Makefile 并编译的流程如下:
- 编写 CMake 配置文件 CMakeLists.txt
- 执行命令 cmake PATH 或者 ccmake PATH 生成 Makefile(ccmake 和 cmake 的 区别在于前者提供了一个交互式的界面),其中, PATH 是 CMakeLists.txt 所在的目录
- 使用 make 命令进行编译
CMake生成makefile的原理
cmake生成makefile的原理是根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile。当然CMakeLists.txt就需要你自己去手写了!
编写CMakeLists.txt文件是重点
一个简单的CMakeLists.txt如下所示,:
# cmake最低版本号要求 cmake_minimum_required (VERSION 2.8) # 设置PROJECT_NAME变量 set(PROJECT_NAME Breakout) # 设置工程名 project (${PROJECT_NAME}) # 查找当前目录下的所有源文件并存入DIR_SRCS变量 aux_source_directory(src DIR_SRCS) # 添加一个可编译的目标到工程 add_executable (${PROJECT_NAME} ${DIR_SRCS})
具体规则可以参考这篇文章。
开发流程
1、下载安装 VSCode
2、下载安装 MinGW
3、下载安装 CMake
4、在VSCode里面安装插件:C/C++,CMake,CMake Tools
5、VSCode中配置CMake
一般刚安装CMake插件后 会自动提示你选择一个编译工具链,如果没有提示或者想更换其他编译工具链,那么可以通过ctrl+shifl+p,输入以下指令,然后在弹出框中选择自己安装的编译工具链。
6、CMake使用
现在我们建立一个目录,结构如下:
. ├── build ├── CMakeLists.txt └── main.cpp └── point.cpp └── circle.cpp
在这编写两个文件,一个是测试程序(main.cpp),一个是CMakeLists.txt。
然后进入build目录,执行cmake
cd Build/ cmake -G "MinGW Makefiles" .. # 或者cmake -G "Unix Makefiles" ..
或者通过如下图所示执行cmake
在build文件夹产生了很多文件,并且包括Makefile文件。
此时,我们使用make命令,就能编译我们的程序了。并且能得到运行结果。
注意:
- CMakeLists.txt 文件中的这行代码 如果你要debug的时候就写上 否则不要写,编译的时候会报错
#set (CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} -g”)
- 需要在MinGW安装路径下进行操作,本来只有mingw32-make.exe文件,你需要复制一份改名为make.exe,只有这样才能在终端使用 make 命令操作,如下图:
编写调试C/C++程序
编写、修改配置文件:
c_cpp_properties.json
指定编译器路径tasks.json
指定如何构建可执行文件launch.json
指定调试器设置
这篇关于使用VSCode和CMake构建跨平台的C/C++开发环境的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-27Excel中实现拖动排序的简单教程
- 2024-11-27Rocket消息队列资料:新手入门指南
- 2024-11-27rocket消息队资料详解与入门指南
- 2024-11-27RocketMQ底层原理资料详解入门教程
- 2024-11-27RocketMQ项目开发资料:新手入门教程
- 2024-11-27RocketMQ项目开发资料详解
- 2024-11-27RocketMQ消息中间件资料入门教程
- 2024-11-27初学者指南:深入了解RocketMQ源码资料
- 2024-11-27Rocket消息队列学习入门指南
- 2024-11-26Rocket消息中间件教程:新手入门详解