如何在VSCode的tasks和launch配置文件中获取当前文件夹的basename?
可行解决方法汇总
方案1:直接使用VSCode内置变量(最简便)
VSCode 原生提供 ${workspaceFolderBasename} 变量,直接返回当前工作区根文件夹的名称,无需额外处理,你可以直接在launch.json和tasks.json里直接引用:
- tasks.json编译配置示例:
{ "tasks": [ { "type": "cppbuild", "label": "C/C++: g++ 编译当前项目", "command": "/usr/bin/g++", "args": [ "-fdiagnostics-color=always", "-g", "${fileDirname}/*.cpp", "-o", "${fileDirname}/${workspaceFolderBasename}" ], "options": { "cwd": "${fileDirname}" }, "problemMatcher": ["$gcc"], "group": { "kind": "build", "isDefault": true } } ], "version": "2.0.0" }
- launch.json调试配置示例,直接把program字段填写为:
"program": "${fileDirname}/${workspaceFolderBasename}"
该方案适配90%以上的常规项目场景,不管你打开什么文件夹作为工作区,都会自动用文件夹名作为可执行文件名,不需要修改任何配置。
方案2:非工作区单文件夹场景兼容方案
如果你是直接打开单个cpp文件、没有创建工作区的场景,可以用以下两种方法实现:
- Makefile适配:直接在Makefile里定义输出名为当前目录名,同时新增软链接生成逻辑:
# 自动取当前文件夹名作为可执行文件名 TARGET = $(notdir $(CURDIR)) all: g++ *.cpp -o $(TARGET) # 生成固定名称的软链接指向实际可执行文件 ln -sf $(TARGET) ./program.out
- launch.json固定引用软链接路径:直接写死为
"program": "${fileDirname}/program.out"即可,不需要每个项目修改配置。
方案3:全局配置复用
你可以把上述配置写到VSCode的全局用户settings.json里,而不是每个项目的.vscode文件夹下,这样所有C++项目都会默认使用这套配置,完全不需要每个项目单独修改。
内容的提问来源于stack exchange,提问作者RajinCoding2007
相关产品推荐
相关产品推荐

