如何在Linux的VS Code中用g++-12构建并运行cppfront程序
在Linux的VS Code中用g++-12构建cppfront程序的配置方案
前提
已通过命令行使用g++-12构建cppfront程序,VS Code已安装cpp2 (cppfront) Syntax Highlighting v0.0.2和C/C++ Extension Pack v1.3.0扩展。项目文件结构如下:
3rd/ cppfront/ include/ cpp2util.h inc/ src/ hw.cpp2 main: () = std::cout << "Hello, world";
构建流程要求:
- 中间转译文件生成到
tmp/目录(如tmp/hw.cpp) - 最终可执行文件输出到
exp/目录(如exp/hw)
一、配置VS Code使用g++-12作为编译器
- 配置C/C++扩展的编译器路径
按下Ctrl+Shift+P,输入C/C++: Edit Configurations (JSON)打开c_cpp_properties.json,修改compilerPath为g++-12的实际路径(通常为/usr/bin/g++-12),同时添加cppfront的头文件路径到includePath:{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "${workspaceFolder}/3rd/cppfront/include" ], "defines": [], "compilerPath": "/usr/bin/g++-12", "cStandard": "c17", "cppStandard": "c++20", "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 }
二、配置自动构建所有src/下的.cpp2文件
通过tasks.json实现批量转译+编译,新增.cpp2文件无需手动修改配置:
- 按下
Ctrl+Shift+P,输入Tasks: Configure Task,选择Create tasks.json from template->Others,将生成的初始内容替换为:
核心逻辑:{ "version": "2.0.0", "tasks": [ { "label": "Build All cpp2 Programs", "type": "shell", "command": "mkdir -p tmp exp && for file in src/*.cpp2; do base=$(basename \"$file\" .cpp2); cppfront \"$file\" -o \"tmp/$base.cpp\"; g++-12 -std=c++20 -I3rd/cppfront/include \"tmp/$base.cpp\" -o \"exp/$base\"; done", "args": [], "group": { "kind": "build", "isDefault": true }, "problemMatcher": "$gcc", "detail": "批量转译src下所有.cpp2文件并使用g++-12编译" } ] }- 自动创建
tmp和exp目录(不存在时) - 遍历
src/下所有.cpp2文件,用cppfront转译为tmp/目录下的.cpp文件 - 调用
g++-12编译转译后的文件,输出到exp/目录
- 自动创建
三、配置一键运行程序(可选)
如果需要直接在VS Code中运行编译后的程序,按下Ctrl+Shift+P输入Debug: Open launch.json,选择C++ (GDB/LLDB),修改配置为:
{ "version": "0.2.0", "configurations": [ { "name": "Run cppfront Program", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/exp/hw", // 可根据需要修改为目标程序名 "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "Build All cpp2 Programs" // 运行前自动触发构建 } ] }
内容的提问来源于stack exchange,提问作者CW Holeman II
相关产品推荐
相关产品推荐

