Ubuntu 环境下 VS code + vcpkg +CMake 搭建开发环境
提前须知:若要只配置 VScode 中的 C/C++ 编译环境,无须安装 git,cmake。
一、 VScode 安装
-
在 VScode 官网 下载
.deb压缩包 -
在下载文件夹中打开终端,运行,记得修改压缩包的正确名字
sudo dpkg -i code_1.45.1-1589445302_amd64.deb -
如果只需要配置
C/C++编译环境,跳转到 五、
二、必要组件的安装
-
一般情况下,
ubuntu会自动安装gcc与g++,可以通过命令来查看是否安装。g++ --version //查看g++版本 gcc --version //查看gcc版本 gdb --version //查看gdb版本 -
如果未安装,通过命令来进行安装,如果不确定,可以统一重新全部安装一次。
sudo apt update sudo apt install build-essential # 包含 g++、gcc、make 等工具 sudo apt install gcc sudo apt install g++ sudo apt install gdb # 调试工具(可选,但建议安装)
二、git安装
sudo apt-get update //更新
sudo apt-get install git //自动安装git
git --version //确认git版本
三、Cmake 安装
-
安装编译所需的依赖包:
sudo apt update sudo apt install build-essential libssl-dev -
下载
CMake的源代码。访问 CMake官网 下载指定版本的源码压缩包。wget https://cmake.org/files/v3.20/cmake-3.20.0.tar.gz -
在下载文件夹下打开终端,解压源代码包,并进入解压后的目录。
tar -zxvf cmake-3.20.0.tar.gz cd cmake-3.20.0 -
编译和安装:
./configure make sudo make install在运行
./configure的时候出现错误,可能是缺少OpenSSL依赖。运行命令,之后重新运行./configure。sudo apt install libssl-dev -
验证安装
cmake --version
四、 vcpkg 安装
-
打开终端,更新软件包列表,并且更新全部软件
sudo apt update sudo apt upgrade -
克隆
vcpkg仓库,在主目录下打开终端,运行git clone https://github.com/microsoft/vcpkg.git -
编译
vcpkg的可执行文件,在vcpkg目录下打开终端,运行,注意此处需要连接github因此需要vpn。./bootstrap-vcpkg.sh #若执行失败,安装需要的依赖 sudo apt-get install curl zip unzip tar -
集成到全局环境,打开终端,运行。
nano ~/.bashrc -
在文件最末尾添加如下内容,可以在
vcpkg文件夹下打开终端输入pwd查看路径。# 添加 vcpkg 到 PATH export VCPKG_ROOT=/home/你的用户名/vcpkg export PATH=$VCPKG_ROOT:$PATH #若出现报红,可以将 = 后面的内容用双引号 "" 括起来 -
保存并关闭文件 (按
Ctrl+X, 然后Y, 然后Enter)。然后运行以下命令。source ~/.bashrc -
查看
vcpkg版本vcpkg version -
在 VScode 中使用
vcpkg安装的包,直接编辑c_cpp_properties.json文件中的"includePath",在参数列表中添加"/home/your-username/vcpkg/installed/x64-linux/include"。 -
卸载
vcpkg,在主目录下打开终端,运行以下命令。rm -rf ~/vcpkg -
使用
vcpkg安装包,在vcpkg目录下打开终端,运行以下指令。# 安装所需库,例如drogon (动态库,通常是默认的) ./vcpkg install drogon # 注意./后面无空格 #查看库是否已经成功安装 ./vcpkg list
五、环境搭建
-
首先需要在 VScode 中下载插件:
C/C++、C/C++ Extension Pack、C/C++Themes、CMake、CMake Tools、CMake Language Support

-
创建一个目录用于存放以后所编写的代码,例如
C++ project,在此目录下创建一个.vscode文件夹,并在.vscode文件夹下创建五个json文件。-
c_cpp_properties.json{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/home/amireux/vcpkg/installed/x64-linux/include", "/usr/include", "/usr/local/include" ], "defines": [], "compilerPath": "/usr/bin/gcc", "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "gcc-x64" } ], "version": 4 } -
launch.json{ "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/${workspaceFolderBasename}", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "cmake-build", "miDebuggerPath": "/usr/bin/gdb" } ] } -
tasks.json{ "version": "2.0.0", "tasks": [ { "label": "cmake-build", "type": "shell", "command": "cmake", "args": [ "--build", "${workspaceFolder}/build", "--config", "Debug" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": [ "$gcc" ], "dependsOn": "cmake-configure" }, { "label": "cmake-configure", "type": "shell", "command": "cmake", "args": [ "-S", "${workspaceFolder}", "-B", "${workspaceFolder}/build", "-G", "Ninja", "-DCMAKE_BUILD_TYPE=Debug" ], "group": "build", "problemMatcher": [] }, { "label": "clean-build", "type": "shell", "command": "rm", "args": [ "-rf", "${workspaceFolder}/build" ], "group": "build" }, { "type": "cppbuild", "label": "C/C++: gcc 生成活动文件", "command": "/usr/bin/g++", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": [ "$gcc" ], "group": "build", "detail": "调试器生成的任务。" }, { "type": "cmake", "label": "CMake: clean rebuild", "command": "cleanRebuild", "targets": [ "all" ], "group": "build", "problemMatcher": [], "detail": "CMake template clean rebuild task" } ] } -
CMakePresets.json:Cmake的预设配置{ "version": 3, "configurePresets": [ { "name": "vcpkg-default", "displayName": "Default Config with Vcpkg", "description": "Configure with vcpkg toolchain", "generator": "Ninja", "binaryDir": "${sourceDir}/build", "cacheVariables": { "CMAKE_TOOLCHAIN_FILE": "/home/amireux/vcpkg/scripts/buildsystems/vcpkg.cmake" } } ], "buildPresets": [ { "name": "vcpkg-default", "configurePreset": "vcpkg-default" } ] } -
settings.json:这是配置Cmake的设置,注意修改cmake.sourceDirectory中的正确路径。{ "cmake.configureOnOpen": true, "cmake.buildDirectory": "${workspaceFolder}/build", "cmake.generator": "Ninja", "cmake.configureArgs": [ "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON" ], "cmake.buildBeforeRun": true, "cmake.options": { "args": [ "--loglevel=verbose" ] }, "files.associations": { "*.cpp": "cpp", "*.h": "cpp", "*.hpp": "cpp" }, "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools", "editor.formatOnSave": true, "cmake.copyCompileCommands": "${workspaceFolder}/build/compile_commands.json", "cmake.sourceDirectory": "${workspaceFolder}", //指定 CMake 项目的源码根目录(即 CMakeLists.txt 所在的目录),确保 CMake 能正确找到项目配置文件。 "cmake.configureSettings": { "CMAKE_TOOLCHAIN_FILE": "/home/amireux/vcpkg/scripts/buildsystems/vcpkg.cmake" } }注意这里面最重要的是
cmake.configureSettings这一项,它是确保cmake可以和vcpkg正确在一起使用的必要参数,路径一定要输入正确。另一种办法是,在 VScode 中快捷键"Ctrl+ ,"打开搜索框输入Cmake: Configure Settings这一项,点击Edit in settings.json。{ "cmake.configureSettings": { // 将路径替换为你自己的 vcpkg 工具链文件路径 "CMAKE_TOOLCHAIN_FILE": "/home/your_username/vcpkg/scripts/buildsystems/vcpkg.cmake" }, }
-
-
创建一个测试文件
test.cpp,并编写CMakeLists.txt,注意,CMakeLists.txt一个字母也不可以错,包括大小写,且这两个是同级的。//test.cpp #include <iostream> #include <drogon/drogon.h> #include<fmt/format-inl.h> using namespace std; void myprint(); void myprint() { cout << "hello" << endl; }; int main() { myprint(); return 0; }# CMakeLists.txt # 注意需要替换你自己的用户名 set(CMAKE_TOOLCHAIN_FILE "/home/amireux/vcpkg/scripts/buildsystems/vcpkg.cmake" CACHE STRING "Vcpkg toolchain file") cmake_minimum_required(VERSION 3.10) project(hello) # 设置 vcpkg 工具链 set(CMAKE_TOOLCHAIN_FILE "/home/amireux/vcpkg/vcpkg/scripts/buildsystems/vcpkg.cmake") # 设置 C++ 标准 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找 Drogon 包 find_package(Drogon REQUIRED) # 添加可执行文件 add_executable(${PROJECT_NAME} hello.cpp) # 链接 Drogon 库 target_link_libraries(${PROJECT_NAME} PRIVATE Drogon::Drogon) # 添加包含目录 target_include_directories(${PROJECT_NAME} PRIVATE ${DROGON_INCLUDE_DIRS})快捷键
Ctrl+Shift+B构建代码,此时可以看到构建成功,在build文件夹下打开终端输入以下命令。# 构建 # 替换为自己的 cpp文件名 ./hello.cpp
运行成功!!!
六、出现的问题
在包安装完并导入之后,发现编译不通过,提示找不到这个包?

-
首先,要确认你的工作区,确保你的
cpp文件和CMakeLists.txt为同级文件。 -
确认
vcpkg安装的包要有对应的.cmake配置文件,例如:如果安装的是drogon包,则应该有对应的drogonconfig.cmake。这个cmake文件路径在:"/home/vcpkg/installed/x64-linux/share"对应的包文件中,如果没有,删除包并重新下载。vcpkg remove <包名> vcpkg install <包名> -
上述如果没问题,就要考虑构建的问题。选择
CmakeLists.txt界面,构建,在对应的build文件夹中,如果找到了生成的可执行文件,那么说明使用cmake构建没有问题,只是编译不通过。这是因为,在构建的时候,默认使用gcc/g++,因此要确认在tasks.json文件中,关于cmake - build这一项任务中的group中有无isDefault:true,将cmake作为默认的构建工具。此时,选择.cpp界面,重新构建,就会发现编译通过,不报错了。"tasks": [ { "label": "cmake-build", "type": "shell", "command": "cmake", "args": [ "--build", "${workspaceFolder}/build", "--config", "Debug" ], "group": { // 修改这里,将 group 改为对象形式并添加 isDefault "kind": "build", "isDefault": true // 关键:设为默认构建任务 }, "problemMatcher": [ "$gcc" ] },

浙公网安备 33010602011771号