【问题标题】:How to configure the VS Code shell like the developer command prompt?如何像开发人员命令提示符一样配置 VS Code shell?
【发布时间】:2020-03-04 16:57:37
【问题描述】:

我正在尝试设置一个任务来在 Visual Studio Code 中编译我的 C++ 代码。我无法让它工作......但是当我打开开发人员命令提示符并将其粘贴时,它吐出的命令工作得很好。

我已设法将此问题缩小到未在 VS Code 使用的 shell 中设置的正确环境变量(如运行 echo %INCLUDE% 仅返回 %INCLUDE% 所证明的那样)。

现在我不完全知道开发人员命令提示符与 VS Code 使用的普通 Powershell 终端有何不同,所以我不知道如何配置它(除了运行 vcvarsall.bat),但即使我可以,每次我在 VS Code 中打开一个新终端时,环境变量都会再次重置。

本质上,我看到的这个问题的解决方案是:

  1. 在每个构建任务之前运行vcvarsall.bat

    不幸的是,我不够熟悉,不知道如何使用tasks.json 配置文件连续执行多个命令。

  2. 将 VS Code 使用的 shell 默认配置为类似于开发者命令提示符。

    不幸的是,我什至不知道从哪里开始。我可以轻松地将 shell 设置为 cmd 或 PowerShell,但不能设置为开发人员命令提示符,而且我也找不到配置其环境变量的位置,也不知道 vcvarsall.bat 的全部效果是什么,所以我知道哪个要设置的变量。

如果有更简单的方法来实现我所追求的目标,我会很高兴听到它。不管怎样,归根结底是我想知道如何配置 VS Code,以使我能够从 IDE 内部编译我的代码。

【问题讨论】:

    标签: shell visual-studio-code environment-variables cl


    【解决方案1】:

    经过一番摸索,我找到了答案。我的设置(tasks.json)现在如下:

    "command": "&",
    "args": [
      "'D:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Auxiliary\\Build\\vcvars32.bat';",
      "cl.exe",
      "/Zi",
      "/EHsc",
      "/Fe:",
      "${fileDirname}\\${fileBasenameNoExtension}.exe",
      "${file}"
    ]
    

    使用&,您可以执行包含空格的路径。这导致我的vcvars32.bat(其他人的位置可能不同)设置正确的变量而无需手动输入它们。 ; 允许您在 PowerShell 中一个接一个地执行多个命令。

    【讨论】:

      【解决方案2】:

      accepted answer 对我不起作用,但有助于找到可行的解决方案。

      使用任务类型"process",然后将命令设置为由开发者命令提示符调用的批处理文件直接启动windows命令提示符(而不是通过powershell调用它)。

      第一个参数是"&",这意味着编译器将在开发人员命令提示符上下文中被调用,而不是仅仅作为参数传递给批处理文件。

      >{
          "version": "2.0.0",
          "tasks": [
            {
              "type": "process",
              "label": "cl.exe build active file",
              "command": "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\VC\\Auxiliary\\Build\\vcvars32.bat",
              "args": [
                "&"
                "cl.exe",
                "/Zi",
                "/EHsc",
                "/Fe:",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "${file}"
              ],
              "problemMatcher": ["$msCompile"],
              "group": {
                "kind": "build",
                "isDefault": true
              }
            }
          ]
        }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-18
        • 2023-03-18
        • 1970-01-01
        • 2020-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-18
        相关资源
        最近更新 更多