如何使用windows上的cl.exe定义task.json以在vscode中编译C / C ++代码?

时间:2016-09-08 07:03:09

标签: c++ c windows visual-studio-code vscode-tasks

我已经在64位win10上安装了Microsoft Visual C ++ Build Tools 2015,并且可以通过以下步骤使用cl.exe在普通命令提示符窗口中编译和链接C / C ++程序(来自{{的一些说明) 3}}):

 1. cd "\Program Files (x86)\Microsoft Visual Studio 14.0\VC"
 2. vcvarsall amd64
 3. cl helloworld.c

helloworld.c只是一个简单的C源文件,用于打印" Hello world!"。我也尝试将task.json配置为直接编译和链接vs代码中的C / C ++程序。这是我的task.json:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "vcvarsall amd64 && cl",
    "isShellCommand": true,
    "args": ["${file}"],
    "showOutput": "always"
}

在PATH中添加了vsvarsallcl的路径。但它仍然不起作用(输出放在帖子的末尾)。所以我的问题是:如何定义task.json,它可以先运行vcvarsall amd64来设置系统变量,然后执行cl命令来编译和链接程序。

Setting the Path and Environment Variables for Command-Line Builds

2 个答案:

答案 0 :(得分:1)

正如 Rudolfs Bundulis 所说,制作批处理文件并调用它,在其中执行您需要做的所有事情。

<强> tasks.json:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "build.bat",
    "isShellCommand": true,
    "args": [],
    "showOutput": "always"    
}

在你的项目中有 build.bat 善良。

<强>的build.bat:

@echo off
call "E:\programs\VS2015\VC\vcvarsall.bat" x64      <----- update your path to vcvarsall.bat

..
cl %YourCompilerFlags% main.cpp %YourLinkerFlags%
..

我想提一下你想要另一个可视化工作室代码bootstraper批处理,它将设置vcvars环境,然后启动编辑器,这样你就不会为每个构建设置vcvars。像这样:

@echo off
call "E:\programs\VS2015\VC\vcvarsall.bat" x64      <----- update your path to vcvarsall.bat

code

这样,每次编译代码时都可以省略vcvarsall.bat的设置。 Minimal rebuild flag也会帮助你很多,所以你只编译已更改的文件。

答案 1 :(得分:0)

或者按照Configuring VS Code For C++所述,将compilerPath添加到您的c_cpp_properties.json

c_cpp_properties.json

{
    "configurations": [
        {
            ...
            "compilerPath": "C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/Tools/MSVC/14.10.25017/bin/Hostx64/x64/cl.exe",
            "cppStandard": "c++17",
            ...
        }
    ],
    "version": 4
}

然后您可以运行cl.exe vs代码,现在知道在哪里可以找到cl.exe