c++ - 如何使用任务在 Visual Studio Code 中运行 Cmake

标签 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"]
    }
]
}

但无论我做什么,它都运行在 ${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/

相关文章:

C++ 标记化

C++填充矩阵 boost

cmake - 无法找到 CTest 配置

typescript - VSCode 中的 Nativescript 共享模式总是用错误 "experimental support for decorators..."错误标记类

Javascript 脚本不适用于 html

java - 使用 VS Code 编译 Java,收到 "restriction on required library"错误消息

C++ - 字符串匹配的值?

c++ - 查找8位BMP中颜色表的位置

c++ - Visual Studio 2010 Qt 插件 Cmake 项目

c++ - 在 Rcpp Makevars 中找到系统范围的库