Установка переменных среды в cmd не имеет никакого эффекта

3063
riv

Я пытаюсь настроить пути к инструментам VS для запуска их в командной строке, как описано в https://msdn.microsoft.com/en-us/library/x4d2c09s.aspx

Я запускаю vcvarsall x64из командной строки с повышенными правами и проверяю содержимое INCLUDEпеременной:

Установка переменных среды в cmd не имеет никакого эффекта

Затем я закрываю командную строку, открываю ее снова и проверяю INCLUDEпеременную:

Установка переменных среды в cmd не имеет никакого эффекта

Как видите, изменения были потеряны, когда я закрыл CMD. Как мне убедиться, что они попадают в системную среду?

Я использую Win 8.1, если это имеет значение.

1

2 ответа на вопрос

1
Ƭᴇcʜιᴇ007

Это потому, что запускаемые им пакетные файлы используются Setдля установки переменных среды ( C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\vcvars64.batэто то, что запускается при запуске vcvarsall x64).

Но Setтолько устанавливает переменные для текущего сеанса командной строки. Вы должны использовать его, Setxчтобы он «держался» между сеансами командной строки.

Для получения дополнительной информации, возможно, проверьте эти другие вопросы SU и ответы:

Редактировать после комментариев:

«Но заданные команды были в скрипте по умолчанию»

VCVarsAll предназначен для запуска среды для установки единственной сборки / действия, которое вы собираетесь выполнить, а не для их постоянной установки.

Visual Studio устанавливает специальные записи «командной строки» для доступа к инструментам (из вашей ссылки: «... и затем выберите одну из командных подсказок встроенного инструмента или кросс-инструмента.»), И эти специальные ярлыки командной строки запускают / пакетный файл, чтобы убедиться, что все установлено правильно, когда вы используете эти ярлыки.

Вы можете скопировать эти ярлыки с вашими собственными ...

Создайте новый ярлык для cmd /k "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64, который запустит командный файл (используя x64 в качестве параметра среды), а затем оставьте окно командной строки открытым.

Затем используйте этот ярлык, чтобы открыть командную строку, если вы хотите использовать инструменты.

Но команды `set` были в сценарии по умолчанию. Вы имеете в виду, что мне нужно отредактировать весь сценарий, чтобы он работал (setx также имеет немного другой синтаксис, кажется)? Попытка запустить его локально также проблематична, потому что я использую FAR-менеджер, и он запускает скрипты bat в своем собственном процессе, поэтому все изменения теряются после его завершения, поэтому мне приходится использовать raw CMD для всей моей работы, что очень неудобно , riv 8 лет назад 0
0
Sergei

Да, вы можете извлечь среду в файл:

cmd /C "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars64.bat" && set > d:\t.txt 

Затем вы можете включить этот файл в make-файл напрямую или использовать другой вариант, который соответствует вашим потребностям.