![cmd で環境変数を設定しても効果がない](https://rvso.com/image/1481882/cmd%20%E3%81%A7%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%E3%82%82%E5%8A%B9%E6%9E%9C%E3%81%8C%E3%81%AA%E3%81%84%20.png)
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 の質問と回答を参照してください。
- PATH やその他の環境変数とは何ですか? また、それらを設定または使用するにはどうすればよいですか?
- 環境変数が固定されない
- コマンドラインから環境変数を設定し、グローバルに固定する
- Windows の環境変数における SETX と SET の違いは何ですか
コメント後に編集:
「しかし、設定されたコマンドはデフォルトのスクリプトにありました」
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 に直接含めるか、ニーズに合った他のオプションを使用します。