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

Immac

我试图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 1上运行:

Executing task in folder cpppractice: cmake C:\workspace\cpp\cpppractice -G "MinGW Makefiles"

这种方法有什么问题吗?据我了解cwd,该options项目中变量应该起作用。

Immac
{
    "label": "cmake",
    "type": "shell",
    "options": {
        "cwd": "${workspaceRoot}/build"
    },
    "command": "cmake \"MinGW Makefiles\"  ${workspaceRoot}",
},

这行得通,似乎“在cpppractice文件夹中的执行任务:”不正确,并且正在正确的位置执行它,至于为什么它以前无法正常工作,我认为它错误地解析了args?我无法确认,但这是输出:

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!'",
    ],
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何仅使用task.json链接Visual Studio Code中的任务?

如何在Visual Studio代码中运行Gulp任务?

如何在Visual Studio for Mac中运行gulp任务?

如何通过使用gulp自动在Visual Studio的后台运行多个任务

如何使用Resharper创建Visual Studio任务?

在Visual Studio Code中使用“ preLaunchTasks”并命名任务

在Visual Studio Code中运行npm命令

在Visual Studio Code中运行JavaScript

如何在Visual Studio中添加新的任务列表项?

如何在Visual Studio中添加新的任务列表项?

如何在Visual Studio Online中复制任务组?

如何在 Visual Studio Code 中找到“任务运行器模板”?

如何在Visual Studio Code中进行调试之前自动运行构建任务?

如何在Visual Studio Code中重置PowerShell运行空间

在Visual Studio Code中运行python脚本;如何使“ input()”工作?

如何在Visual Studio Code中运行Flutter Official Samples

如何在Visual Studio Code中运行多个终端命令?

如何在Visual Studio Code中运行Powershell脚本?

如何在Ubuntu的Visual Studio Code中运行Scheme?

如何在Visual Studio Code中运行raw_input?

如何设置键盘映射以在 Visual Studio Code 中运行代码?

如何在 Visual Studio Code 中运行 C 程序?

在CI中运行Visual Studio运行任务时出错

如何从Visual Studio 2017(基于目录的项目)中的任意构建任务运行bash?

Azure 管道:如何保存 Visual Studio“测试结果”以与管道中的其他任务一起使用?

如何使Visual Studio Code使用Visual Studio IDE按键绑定?

打开工作区时在 Visual Studio Code 中自动运行 gulp 任务

如何在Visual Studio Code中手动终止任务?

使用Visual Studio Code任务自动执行多个文件夹中的C makefile