如何用Visual Studio Code在Ubuntu上构建调试运行VS2019的C++ .sln解决方案
可行实现方案
第一步:选择适配多文件的构建系统
原Visual Studio的sln解决方案是Windows平台专属格式,Ubuntu下需要替换为跨平台构建规则,根据项目规模选择对应方案即可:
- 项目规模较小(几十个源文件以内)可直接手写Makefile,示例如下:
# 编译器指定为g++ CXX = g++ # 编译参数:开启警告、添加调试信息、指定C++标准 CXXFLAGS = -Wall -g -std=c++17 # 自动扫描目录下所有cpp文件,也可手动罗列所有源文件 SRCS = $(wildcard *.cpp) # 生成对应目标文件列表 OBJS = $(SRCS:.cpp=.o) # 最终可执行文件名 TARGET = my_app all: $(TARGET) $(TARGET): $(OBJS) $(CXX) $(OBJS) -o $(TARGET) # 清理编译产物命令 clean: rm -f $(OBJS) $(TARGET)
编写完成后在项目根目录执行make即可完成编译,执行make clean可清理所有编译产物。
- 项目规模大、结构复杂的场景推荐使用CMake,可同时兼容Windows+Linux双平台,后续Windows端也可以用CMake生成Visual Studio解决方案,无需维护两套构建规则。示例CMakeLists.txt如下:
cmake_minimum_required(VERSION 3.10) # 填写项目名称 project(my_app) # 指定C++标准,和原VS项目保持一致即可 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 自动扫描目录下所有源文件,也可手动罗列 aux_source_directory(. SRCS) # 生成可执行文件 add_executable(my_app ${SRCS})
编写完成后依次执行以下命令完成编译:mkdir build && cd buildcmake ..make
编译后的可执行文件会生成在build目录下。如果原VS解决方案结构非常复杂,可使用转换工具批量将sln文件转为CMakeLists,无需手动整理源文件列表。
第二步:配置VSCode实现一键构建、调试、运行
首先确认你已经安装VSCode官方C/C++扩展,之前安装的sln浏览扩展可继续保留用做文件导航,不影响后续流程。
在项目根目录新建.vscode文件夹,在其中编写三个配置文件:
1. tasks.json(配置一键构建任务)
Makefile场景配置示例:
{ "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "make", "args": [], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"] } ] }
CMake场景只需将command字段修改为cd build && make即可。配置完成后按Ctrl+Shift+B即可一键触发构建,无需手动输入命令。
2. launch.json(配置调试运行规则)
{ "version": "0.2.0", "configurations": [ { "name": "Debug my_app", "type": "cppdbg", "request": "launch", // 替换为你的可执行文件实际路径 "program": "${workspaceFolder}/my_app", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], // 调试前自动执行构建任务,和tasks.json的label对应 "preLaunchTask": "build", "miDebuggerPath": "/usr/bin/gdb" } ] }
配置完成后按F5即可一键构建+调试,按Ctrl+F5可直接运行不调试,操作逻辑和原Visual Studio一致。
补充优化建议
- 如果项目依赖第三方库,只需在Makefile/CMakeLists中添加对应的头文件路径、库路径和链接参数即可,无需调整VSCode侧配置。
- 使用CMake的场景可安装VSCode的CMake Tools扩展,无需手写相关JSON配置,扩展会自动识别CMakeLists,提供可视化的构建、调试按钮,操作更简便。
内容的提问来源于stack exchange,提问作者khteh
相关产品推荐
相关产品推荐

