cmd で環境変数を設定しても効果がない

cmd で環境変数を設定しても効果がない

VSツールへのパスを設定して、コマンドラインで実行しようとしています。出典: msdn.microsoft.com

管理者特権のコマンド プロンプトから実行しvcvarsall x64、変数の内容を確認しますINCLUDE

ここに画像の説明を入力してください

次に、コマンド プロンプトを閉じて再度開き、INCLUDE変数を確認します。

ここに画像の説明を入力してください

ご覧のとおり、CMD を閉じると変更が失われました。変更がシステム環境に確実に反映されるようにするにはどうすればよいでしょうか?

関係があるなら、私は Win 8.1 を使用しています。

答え1

これは、実行するバッチ ファイルが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 を使用)、コマンド ライン ウィンドウを開いたままにすることができます。

次に、ツールを使用するときに、そのショートカットを使用してコマンド プロンプトを開きます。

答え2

はい、環境をファイルに抽出できます:

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

次に、このファイルを makefile に直接含めるか、ニーズに合った他のオプションを使用します。

関連情報