Imm*_*mac 5 c++ cmake visual-studio-code vscode-tasks
我正在尝试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"]
}
]
}
Run Code Online (Sandbox Code Playgroud)
但无论我做什么,它都运行在 ${workspaceRoot} 而不是 ${workspaceRoot}/build 上:
Executing task in folder cpppractice: cmake C:\workspace\cpp\cpppractice -G "MinGW Makefiles"
Run Code Online (Sandbox Code Playgroud)
这种方法有什么问题吗?据我了解cwd,options项目中的变量应该可以工作。
{
"label": "cmake",
"type": "shell",
"options": {
"cwd": "${workspaceRoot}/build"
},
"command": "cmake \"MinGW Makefiles\" ${workspaceRoot}",
},
Run Code Online (Sandbox Code Playgroud)
这有效,似乎“在文件夹 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
Run Code Online (Sandbox Code Playgroud)
以前它抱怨无法使用生成器“MinGW”,这意味着它将参数“MinGW Makefiles”分开。经过一番修补后,我发现这也是一个答案:
{
"label": "cmake",
"type": "shell",
"options": {
"cwd": "${workspaceRoot}/build"
},
"command": "cmake",
"args": [
"-G",
"'MinGW Makefiles'",
"./.."
],
...
},
Run Code Online (Sandbox Code Playgroud)
我实际上发现第二种方法更简洁,但两者的工作方式相同,因此为了将参数作为字符串传递,您必须使用单引号,如下所示:
...
"command":"echo",
"args": [
"'Za Warudo!'",
],
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15303 次 |
| 最近记录: |