一、引言
在linux以及unix下开发C++程序很多人都做过,笔者以前是通过vi编辑器编辑或者在windows下编辑甚至编译再将源文件ftp保存到服务器上,再在服务器端使用gcc编译,用gdb调试,但现在使用的国产电脑,客户端就是linux,以前的方式已经不适合了。为此需要一个在linux下可以使用的IDE开发和构建环境,笔者选择的是Visual Studio Code编辑器。
Visual Studio Code是一款由微软开发的免费轻量级、快速、易扩展的跨平台代码编辑器。它支持多种编程语言和框架,包括JavaScript、TypeScript、Python、C++等。Visual Studio Code具有智能感知、调试、Git版本控制、插件扩展等丰富的功能,可以用于开发Web应用程序、桌面应用程序、移动应用程序等,也可以作为普通文本编辑器使用。
其实还有很多其他linux下的IDE工具如Eclipse CDT、JetBrains CLion、Code::Blocks、NetBeans等,笔者之所以选择Visual Studio Code,是因为它是轻量级的同时支持C++和Python的linux下IDE工具。
使用Visual Studio Code开发C++程序,需要安装C++相关插件来配置C++的编译环境,安装GCC编译器后,将其路径添加到Visual Studio Code的配置文件中,然后就可以在Visual Studio Code中编写和编译C++程序了。
二、安装vscode
visual studio code的安装非常简单,直接在UOS的软件仓库中选择visual studio code,点击安装即可。这是软件仓库中关于vscode的介绍:
在统信操作系统下vscode安装的目录为:/opt/apps/com.visualstudio.code.uos/files/code 。
三、安装C++扩展
visual studio code安装完成后,还需要安装支持C++的扩展,可以通过搜索C++关键词找到相关扩展
笔者安装了如下扩展:
注意:上面安装的扩展下面几个颜色暗淡一些的表示禁用了,需要通过后面的配置按钮打开,否则后续不能使用。
四、安装CMake
在linux下可以直接使用gcc或g++进行文件编译,但如果一个工程涉及文件过多,用gcc来进行编译非常不方便,为此需要使用makefile来组织管理编译处理。
make是一个在Unix和linux系统上常用的构建工具,它使用Makefile来定义构建过程。Makefile是一个包含一系列规则的文本文件,每个规则描述了如何生成一个或多个目标文件,记录了编译和链接C++代码所需的规则和依赖关系。通过Makefile可以告诉编译器如何编译每一个源文件,并指定链接所需的目标文件和库文件。Makefile还具有智能重编译的功能,当项目中的某个文件发生修改时,它可以自动检测出需要重新编译的文件,从而提高编译效率。使用Makefile可以简化编译过程,减少手动操作,特别适用于大型项目的编译和维护。
以前在windows下使用Visual C++时,通过适当的参数配置就可以进行编译,无需自己编写makefile,但visual studio code不支持这种能力,需要开发者自己编写makefile。为了能够提高makefile编写的效率,以及支持跨平台的构建,可以使用CMake来进行makefile的生成。
CMake是一个跨平台的构建自动化工具,它使用CMakeLists.txt的脚本语言来定义构建过程。通过CMake可以生成适合不同平台和编译器的Makefile,并使用它们来构建项目,无需手动编写平台特定的构建脚本。CMake具有更高级的抽象能力,允许使用简洁的语法描述项目的结构和构建需求。CMake相对于make的优势在于它的跨平台性和更高级的抽象能力,另外CMake还提供了更多的功能,如自动查找依赖、模块化的项目结构和易于维护的构建配置。
前面安装visual studio code扩展只是为了利用已有的gcc编译器和CMake进行相关编译处理,如果机器上未安装gcc、g++编译器和CMake,则需要另外安装。统信操作系统安装后,自带了gcc、g++和make,但没有安装CMake,需要单独安装。CMake安装和安装visual studio code扩展没有顺序依赖关系。
下面是cmake的安装指令:
sudo apt install cmake
安装后cmake和make都在/usr/bin目录下。
五、配置cmake
在visual studio code界面打开一个要编译工程的文件夹按F1,出现下面的窗口:
选择CMake快速入门(Quick start),出现如下界面:
输入项目名称(在Visual Studio Code中,项目的名称是自定义的,也就是工程文件名和最终编译后的执行文件名,一般建议根据创建项目时设置的文件夹名称来确定的),笔者的文件夹名为test,将项目名命名为hello,输入回车后选择项目语言类型,选择C++项目:
选择语言类型后出现编译目标文件类型,选择创建可执行文件:
cmake将生成一个初始的CMakeKists.txt文件(注意上述截图文件夹中的bin、build、包含make的所有文件是笔者在此之前测试生成的),按照上述步骤第一次生成后的真正文件夹内容及CMakeKists.txt文件如下图所示:
下面就是根据上述配置步骤自动生成的CMakeKists.txt文件内容:
cmake_minimum_required(VERSION 3.0.0)
project(hello VERSION 0.1.0 LANGUAGES C CXX)include(CTest)
enable_testing()add_executable(hello main.cpp)set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
六、编译文件
生成了CMakeKists.txt文件后,就可以做后续的编译操作,具体步骤如下:
- 在VSCode中进入终端操作
在VSCode中打开项目文件夹后,在顶部菜单栏选择“Terminal(终端)” -> “New Terminal(新建终端)”打开终端,进入终端操作证模式,如下图:
2. 在终端中进入CMakeKists.txt文件所在目录,执行cmake指令,如下图所示:
注意cmake指令后的参数为CMakeKists.txt文件所在目录,这里用的命令是“cmake .”
,是因为在终端中进入了CMakeKists.txt文件所在目录,所以用代表当前目录的点就可以,如果是进入了子目录,就可以用两个点的父目录来进行操作。下面是笔者机器上执行的指令及输出内容:
administrator@jwp:/data/home/administrator/E_DRIVER/vcwork/test$ ls CMake*.txt
CMakeLists.txt
administrator@jwp:/data/home/administrator/E_DRIVER/vcwork/test$ cmake .
-- The C compiler identification is GNU 8.3.0
-- The CXX compiler identification is GNU 8.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /data/home/administrator/E_DRIVER/vcwork/test
administrator@jwp:/data/home/administrator/E_DRIVER/vcwork/test$
执行完cmake后,生成了对应的makefile文件。
- 执行make构建目标文件
成功执行cmake后,就生成了构建工程目标文件的相关makefile文件,此时只需要在makefile文件所在目录不带参数执行make指令即可,如下图:
七、小结
本文详细介绍了在国产浪潮电脑+统信UOS操作系统中安装visual studio code和cmake搭建C++开发环镜的过程及案例,相关的操作同样适用于其他linux操作系统。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
更多关于信创之国产浪潮电脑+统信UOS操作系统体验的内容请参考专栏《国产信创之光》的其他文章。
关于老猿的付费专栏
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt开发图形界面Python应用专栏目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音视频开发专栏文章目录》;
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初学者疑难问题集》为《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初学者疑难问题集专栏目录 》
- 付费专栏《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。