在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++程序了。
visual studio code的安装非常简单,直接在UOS的软件仓库中选择visual studio code,点击安装即可。这是软件仓库中关于vscode的介绍:
在统信操作系统下vscode安装的目录为:/opt/apps/com.visualstudio.code.uos/files/code 。
visual studio code安装完成后,还需要安装支持C++的扩展,可以通过搜索C++关键词找到相关扩展
笔者安装了如下扩展:
注意:上面安装的扩展下面几个颜色暗淡一些的表示禁用了,需要通过后面的配置按钮打开,否则后续不能使用。
在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目录下。
在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中打开项目文件夹后,在顶部菜单栏选择“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文件。
本文详细介绍了在国产浪潮电脑+统信UOS操作系统中安装visual studio code和cmake搭建C++开发环镜的过程及案例,相关的操作同样适用于其他linux操作系统。
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
更多关于信创之国产浪潮电脑+统信UOS操作系统体验的内容请参考专栏《国产信创之光》的其他文章。
前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python图形图像处理 》的学习使用。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《https://blog.csdn.net/laoyuanpython/category_9831699.html 专栏:Python基础教程目录)从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。