Как настроить оболочку VS Code как командную строку разработчика?

Я пытаюсь настроить задачу для компиляции моего кода C++ в коде Visual Studio. Я не могу заставить его работать... но команда, которую он выдает, отлично работает, когда я просто открываю командную строку разработчика и вставляю ее.

Мне удалось сузить эту проблему до правильных переменных среды, не установленных в оболочке, которую использует VS Code (о чем свидетельствует запуск echo %INCLUDE%, просто возвращающий %INCLUDE%).

Теперь я точно не знаю, чем командная строка разработчика отличается от обычного терминала Powershell, используемого VS Code, поэтому я не знал бы точно, как его настроить (кроме запуска vcvarsall.bat), но даже если бы я мог, каждый раз Я открываю новый терминал в VS Code, переменные среды снова сбрасываются.

По сути, решения этой проблемы, которые я вижу, таковы:

  1. Запускайте vcvarsall.bat перед каждой задачей сборки.

    К сожалению, я недостаточно знаком, чтобы знать, как выполнять несколько команд подряд, используя файл конфигурации tasks.json.

  2. Настройте оболочку, которую использует VS Code, чтобы она по умолчанию была похожа на командную строку разработчика.

    К сожалению, я даже не знаю, с чего начать. Я могу легко настроить оболочку, используемую либо на cmd, либо на PowerShell, но не на командную строку разработчика, и я не могу найти, где настроить переменные среды, и я не знаю, каковы все эффекты vcvarsall.bat, поэтому я знаю, какие переменные использовать. установлен.

Если есть более простой способ добиться того, что мне нужно, я был бы очень рад это услышать. Несмотря на это, все сводится к тому, что я хочу знать, как настроить VS Code таким образом, чтобы я мог компилировать свой код внутри IDE.


person gamesaucer    schedule 04.03.2020    source источник


Ответы (2)


Я нашел ответ после еще нескольких поисков. Моя установка (в 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.

person gamesaucer    schedule 05.03.2020

принятый ответ мне не помог, но помог найти работающее решение.

Использование типа задачи "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
        }
      }
    ]
  }
person John    schedule 25.08.2020