我正在尝试使用 ctrl+shift+B
运行 cmake像这样:
{
"version": "2.0.0",
"tasks": [
{
"label": "cmake",
"type": "shell",
"options": {
"cwd": "${workspaceRoot}/build"
},
"command": "cmake ${workspaceRoot} -G \"MinGW Makefiles\"",
(...)
},
{
"label": "make",
"type": "shell",
"command": "mingw32-make.exe",
"options": {
"cwd": "${workspaceRoot}/build"
},
(...),
"dependsOn":["cmake"]
},
{
"label": "build",
"type": "shell",
"options": {
"cwd": "${workspaceRoot}/build"
},
"group": {
"kind": "build",
"isDefault": true
},
"dependsOn": ["make"]
}
]
}
但无论我做什么,它都运行在 ${workspaceRoot} 而不是 ${workspaceRoot}/build 上:
Executing task in folder cpppractice: cmake C:\workspace\cpp\cpppractice -G "MinGW Makefiles"
这种方法有什么问题吗?据我了解
cwd
options
中的变量项目应该工作。
最佳答案
{
"label": "cmake",
"type": "shell",
"options": {
"cwd": "${workspaceRoot}/build"
},
"command": "cmake \"MinGW Makefiles\" ${workspaceRoot}",
},
这有效,似乎“在文件夹 cpppractice 中执行任务:”不准确并且它在正确的位置执行它,至于为什么它以前不起作用我认为它解析了错误的参数?我无法确认,但这是输出:
Executing task in folder cpppractice: cmake "MinGW Makefiles"
C:\workspace\cpp\cpppractice <
-- Configuring done
-- Generating done
-- Build files have been written to: C:/workspace/cpp/cpppractice/build
以前它提示无法使用生成器“MinGW”,这意味着它将参数“MinGW Makefiles”分开。
经过一番修补后,我发现这也是一个答案:
{
"label": "cmake",
"type": "shell",
"options": {
"cwd": "${workspaceRoot}/build"
},
"command": "cmake",
"args": [
"-G",
"'MinGW Makefiles'",
"./.."
],
...
},
我实际上发现第二种方法更简洁,但两者的工作方式相同,因此为了将参数作为字符串传递,您必须使用单引号,如下所示:
...
"command":"echo",
"args": [
"'Za Warudo!'",
],
...
关于c++ - 如何使用任务在 Visual Studio Code 中运行 Cmake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49584507/