无论您是否是《指环王》电影的粉丝,您都会同意几乎每个人都喜欢统一性,而拥有统一的开发体验是开发人员一直在努力和欢迎的东西。
长期以来,开发环境一直与特定技术紧密结合,例如 Visual Studio 主要用于 .NET 与 Windows 的开发。也看到开发人员之间的激烈争论,他们在无休止地争论一种工具与另一种工具的差别。
我相信这永远不会结束,也不应该结束,因为很多时候这些争论会产生我们今天正在使用的工具。
在本教程中,我们将与您分享如何在 Linux 构建 C 语言开发环境使用VS Code 编辑器。
如果您已经将 VS Code 与其他一些编程语言一起使用,那么您已经成功了一半。对于其他人,你们可以看看 Linux 用户都是怎么构建自己的开发环境,以及是否想尝试一下。
VS Code
VS Code 是一个轻量级、开源、自由且可扩展的 IDE,并且它每天都在变得更好。我经常在 Node.JS 开发工作中使用 VS Code。
Fedora / CentOS 安装 C / C++ 开发工具
yum groupinstall 'Development Tools'
Ubuntu / Debian 安装 C / C++ 开发工具
sudo apt-get update
sudo apt-get install build-essential manpages-dev
安装 Vscode
VScode 具体安装方式请参考我们的教程如何在 Linux 安装 Vscode,教程包括在各种Linux 发行版安装 VScode。例如 CentOS,Ubuntu,Debian。
安装 C / C++ for Visual Studio Code 扩展
打开你的 VS Code,在左侧工具栏中点击扩展图标按钮或者使用快捷键Ctrl+Shift+X
然后搜索 C/C++ 扩展,点击安装 Install。
配置 VS Code C / C++扩展
如果你是一个JavaScript 开发者,也许会看不惯函数之后的中括号 {
换行。这种风格只有对长期使用不换行的人才就会形成强逼症,习惯已经养成难以改变。
但这是 C / C++ 的默认风格。如果你不想折腾请继续使用这种风格。毕竟是官方标准,形成这个习惯看很多 C / C++ 代码就不难了。
还有一点就是写着写着中括号不知道在那里。接下来我们改变这种函数后面中括号的换行的风格,比较工资不是按行数给的。
打开 VS Code 设置,找到 C / C++ 扩展设置,在搜索框中输入 format
,找到 C_Cpp: Clang_format_fallback Style 设置。
这是一个输入框,可以输入值是 Visual Studio
, LLVM
,Google
, Chromium
,Mozilla
,WebKit
,Microsoft
, GNU
,none
。
个人选择 Google 风格,Google 风格与 JavaScript 的代码风格可以说是一致。请根据你的个人喜好配置,这里不细说各个风格设置。你也可以直接以 JSON 格式编辑 VS Code 的设置文件。
{
"C_Cpp.clang_format_fallbackStyle": "Google",
}
创建 C 语言项目
运行 cd
命令切换到家目录并运行 mkdir 命令 mkdir -p cpp/helloworld
创建 C 语言项目。
VS Code 调试 C 语言项目
接下来配置VS Code,调试 C 语言代码。首先在你的项目根目录创建文件夹 .vscode
。运行命令 mkdir -p .vscode
。
mkdir -p .vscode
在 .vscode
目录创建三个文件,分别是 c_cpp_properties.json
,launch.json
,tasks.json
。
c_cpp_properties.json
文件主要是配置 C 语言项目 include 路径,以及使用C / C++的版本。
在这个示例中使用 C 的标准库版本是 C23,C++ 的标准库版本是 C17。include 路径是标准的 Linux 系统头文件路径和项目目录的 include 目录。
launch.json 文件主要用于指定可执行文件启动方式和选项,通常可执行程序启动方式可以在终端直接运行。
由于我们需要调试并运行运行程序,因此我们使用 gdb 调试器启动可执行文件。在 Linux gdb 调试器的默认路径是 /usr/bin/gdb。
在这里我们也说说一些重要的选项,program
指定可执行文件的绝对路径,cwd
指定工作目录,通常是项目根目录,${workspaceFolder} 表示项目根目录。
如果你的可执行文件需要传递参数,可以在 args
数组指定要传递的参数,environment
顾名思义,也就是环境变量,你可以在程序运行后获取指定的环境变量。
还有一个非常重要的选项是 preLaunchTask
,允许你在运行程序之前,执行指定的任务,在 C 语言的项目中,通常是编译项目。
tasks.json 文件主要用于编译 C 语言项目文件并生成一个可执行文件,可执行文件用于在启动调试时候使用。
tasks.json 文件中的 command
允许你指定编译器,在 Linux 默认是 gcc,但你需要指定绝对路径因此是 /usr/bin/gcc
。
args 用于指定 C 编译器的选项,你可以看到此示例中我们启用了线程(-pthread),数学(-lm)的标准库,并在根目录添加一个文件 libs.c
,
注意:如果你的项目根目录没有 libs.c
文件,请删除 libs.c
行。
你可能还注意到一个奇怪的参数 ${fileDirname}/${fileBasenameNoExtension} ,其实这个参数是指定给 gcc 的 -o
选项, -o
选项指示 gcc 要生成的文件名称。
因此,你可以想到 ${fileDirname} 应该是当前活动的文件,${fileBasenameNoExtension} 顾名思义也就是没有扩展名的文件名。main.c
将会生成可执行文件 main。
当文件创建完成后,你可以按快捷键 ctrl+shift+b
仅构建项目,也可以直接按快捷键 F5
开始进行调试。
结论
至此,你已经熟悉如何在 Linux 使用 VS Code 构建 C 语言开发环境。如果你遇到任何问题,欢迎在下面发表评论。