Windows* で setvars および oneapi-vars スクリプトを使用

統合ディレクトリー・レイアウトが 2024.0 で実装されました。複数のツールキット・バージョンがインストールされている場合、統合レイアウトにより、開発環境にその特定のツールキット・バージョンの一部としてリリースされたコンポーネントのバージョンが含まれるようにする機能が追加され、PATH 名が短縮されるため、長い PATH 名の問題が解決されます。

新しい統合ディレクトリー・レイアウトでは、共通フォルダーのコレクション (bin、lib、include、share など) にコンポーネントが一緒にインストールされます。これらの共通フォルダーは、ツールキットのバージョン番号に基づいて命名された最上位フォルダーにあります。以下に例を示します:

"C:\Program Files(x86)\Intel\oneAPI\2024.0\" 
|-- bin 
|-- lib 
|-- include 
...etc...

2024.0 より前に使用されていたディレクトリー・レイアウトは、新規および既存のインストールで引き続きサポートされます。この以前のレイアウトは、コンポーネント・ディレクトリー・ レイアウトと呼ばれます。コンポーネント・ディレクトリー・ レイアウトまたは統合ディレクトリー・レイアウトを使用するオプションが提供されます。

コンポーネント・ディレクトリー・レイアウトと統合ディレクトリー・レイアウトの違い

ほとんどの oneAPI コンポーネント・ツール・フォルダーには、oneAPI 開発作業をサポートするそれぞれのコンポーネントに必要な環境変数を設定する env\vars.bat スクリプトが含まれています。たとえば、デフォルトのインストールでは、Windows* 上のインテル® インテグレーテッド・パフォーマンス・プリミティブ (インテル® IPP) の vars スクリプトは、コンポーネント・ディレクトリー・レイアウトの C:\Program Files (x86)\Intel\oneAPI\ipp\latest\env\vars.bat にあります。このパターンは、env\vars セットアップ・スクリプトを含むすべての oneAPI コンポーネントで同様です。

コンポーネント・ディレクトリー・レイアウトでは、コンポーネント env\vars スクリプトを直接、またはまとめて呼び出すことができます。まとめて呼び出すには、oneAPI インストール・ディレクトリーにある setvars.bat スクリプトを使用します。例えば、デフォルトのコンポーネント・ディレクトリー・レイアウトのインストールでは、C:\Program Files (x86)\Intel\oneAPI\setvars.bat です。統合ディレクトリー・レイアウトでは、開発環境を初期化する env\vars.bat スクリプトは使用されません。代わりに、各コンポーネントは、コンポーネントに共通の共有フォルダーに集約されます。つまり、各コンポーネントは、ヘッダーファイルを単一の共通 include フォルダーに集約し、ライブラリー・ファイルを単一の共通 lib フォルダーに集約します。

統合ディレクトリー・レイアウトの利点

統合ディレクトリー・レイアウトにより、setvars 設定ファイルを構成および維持したり、複数のインテル® oneAPI ツールキットをインストールしてゲームをプレイする必要がなくなり、異なるツールキット・バージョン間の切り替えがはるかに簡単になります。これは、一部の Windows* 開発者にとって厄介な問題である、Windows* 開発システム上の環境変数、特に PATH 変数長を制限する場合にも役立ちます。

統合ディレクトリー・レイアウト環境変数は、まとめて設定する必要があります。開発環境変数を初期化するには、oneapi-vars.bat スクリプトを使用します。Windows* マシン上のデフォルトの統合ディレクトリー・レイアウトのインストールでは、スクリプトは C:\Program Files (x86)\Intel\oneAPI\<toolkit-version>\oneapi-vars.bat にあります。<toolkit-version> は、インストールした oneAPI ツールキットのバージョン番号に対応します。例: C:\Program Files (x86)\Intel\oneAPI\2024.0\oneapi-vars.bat または C:\Program Files (x86)\Intel\oneAPI\\2024.1\oneapi-vars.bat

引数なしで setvars.bat スクリプトを実行すると、コンポーネント・ディレクトリー・レイアウトのインストール内のすべての <component>\latest\env\vars.bat スクリプトが検索され実行されます。これらのスクリプトによって変更された環境は、setvars.bat を実行した後に Windows* の set コマンドで確認できます。

引数なしで oneapi-vars.bat スクリプトを実行すると、その oneapi-vars.bat スクリプトが配置されている特定のツールキット ・バージョンの環境が構成されます。また、統合ディレクトリーのインストールの一部であるオプションの C:\Program Files (x86)\Intel\oneAPI\<toolkit-version>\etc\<component>\vars.sh スクリプトも実行されます。これらのスクリプトによって変更された環境は、oneapi-vars.bat を実行した後に Windows* の setenv コマンドで確認できます。

oneapi-vars.bat の詳細については、統合ディレクトリー・レイアウト環境の初期化を参照してください。

Visual Studio* Code 拡張

Visual Studio Code* 開発者は、oneAPI 環境拡張をインストールして Visual Studio Code* で setvars.bat を実行できます。詳細については、Visual Studio Code* でインテル® oneAPI ツールキットを使用する (英語) をご覧ください。

setvars.bat | oneapi-vars.bat スクリプト (または個別の vars.bat スクリプト) により変更された環境は永続的ではありません。これらの変更は、setvars.bat | oneapi-vars.bat 環境スクリプトが実行された cmd.exe セッションでのみ有効です。

コマンドライン引数

setvars.bat | oneapi-vars.bat スクリプトは、いくつかのコマンドライン引数をサポートしており、--help オプションで引数の一覧を表示できます。以下に例を示します:

コンポーネント・ディレクトリー・レイアウト

"C:\Program Files (x86)\Intel\oneAPI\setvars.bat" --help

統合ディレクトリー・レイアウト

"C:\Program Files (x86)\Intel\oneAPI\<toolkit-version>\oneapi-vars.bat" --help

--config=file 引数と setvars.bat | oneapi-vars.bat スクリプトから呼び出される vars.bat スクリプトへ追加引数をインクルードする機能を使用して、環境設定をカスタマイズできます。--config=file オプションは、setvars.bat スクリプトでのみサポートされます。

--config=file 引数は、特定のインテル® oneAPI コンポーネントの環境の初期化を制限するとともに、特定のバージョンの環境を初期化することもできます。例えば、インテル® インテグレーテッド・パフォーマンス・プリミティブ・ライブラリー (インテル® IPP)とインテル® oneAPI マス・カーネル・ライブラリー (oneMKL) の環境のみを設定するには、これら 2 つのインテル® oneAPI コンポーネントの vars.bat 環境スクリプトのみを呼び出すように setvars.bat スクリプトに指示する設定ファイルを渡します。詳細と利用例については、Windows* で setvars.bat の設定ファイルを使用をご覧ください。

setvars.bat | oneapi-vars.bat のヘルプ・メッセージに記載されていない、setvars.bat | oneapi-vars.bat コマンドラインで渡される追加の引数は、呼び出されたすべての vars.bat スクリプトに渡されます。つまり、setvars.bat | oneapi-vars.bat スクリプトが認識できない引数は、その引数は 1 つ以上のコンポーネント・スクリプトによって使用されるものと見なされ、それらの引数はすべてのコンポーネントの vars.bat スクリプトに渡されます。最もよく使用される追加の引数は、ia32intel64 です。これらは、インテル® コンパイラー、インテル® IPP、oneMKL、およびインテル® スレッディング・ビルディング・ブロック・ライブラリー (oneTBB) でアプリケーションのターゲット・アーキテクチャーを指示するために使用されます。

システムに複数バージョンの Microsoft* Visual Studio* がインストールされている場合、setvars.bat | oneapi-vars.bat 環境初期化の一部としてどのバージョンの Visual Studio 環境を初期化するかを指定できます。それには、setvars.bat | oneapi-vars.batvs2017vs2019、または vs2022 引数を追加します。デフォルトでは、Visual Studio* の最新バージョンが使用されます。

個々の vars.bat スクリプトを調べて、受け入れるコマンドライン引数があればそれを確認します。

実行方法

コンポーネント・ディレクトリー・レイアウト

<install-dir>\setvars.bat

PowerShell ウィンドウで setvars.bat または vars.bat スクリプトを実行するには、以下を使用します:

cmd.exe "/K" '"C:\Program Files (x86)\Intel\oneAPI\setvars.bat" && powershell'

統合ディレクトリー・レイアウト

<install-dir>\<toolkit-version>\oneapi-vars.bat

PowerShell ウィンドウで oneapi-vars.bat または vars.bat スクリプトを実行するには、以下を使用します:

cmd.exe "/K" '"C:\Program Files (x86)\Intel\oneAPI\<toolkit-version>\oneapi-vars.bat" && powershell'

確認方法

setvars.bat | oneapi-vars.bat を実行した後、SETVARS_COMPLETED 環境変数を検索して設定の成功を確認できます。setvars.bat | oneapi-vars.bat が成功すると、SETVARS_COMPLETED には 1 が設定されます。

set | find "SETVARS_COMPLETED"

戻り値

SETVARS_COMPLETED=1

SETVARS_COMPLETED=1 以外の場合、oneapi-vars.bat は設定に失敗したことを意味します。

VS####INSTALLDIR 環境変数を使用

Visual Studio* を標準以外の場所にインストールした場合、または Visual Studio* ビルド ツールのみ (完全な Visual Studio* IDE ではない) をインストールした場合、setvars.bat スクリプトが Visual Studio* の vcvarsall.bat スクリプトを見つけられない問題が発生することがあります。このような場合、VS####INSTALLDIR 環境変数を使用して適切な Visual Studio* インストールを検出できます。たとえば、Visual Studio* ビルド ツールのみがインストールされている場合、setvars.bat を機能させるには次の手順を実行します:

> set "VS2022INSTALLDIR=%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools" > "%ProgramFiles(x86)%\Intel\oneAPI\setvars.bat"

また、システムに複数バージョンの Visual Studio* がインストールされている場合、VS####INSTALLDIR 環境変数を使用して、setvars.bat に特定バージョンの Visual Studio* インストール環境を強制的に構成できます。

複数の実行

各コンポーネントの env\vars.bat スクリプトの多くは、PATH、CPATH、およびそのほかの環境変数に変更を加えるため、最上位のsetvars.bat | oneapi-vars.bat スクリプトは同じセッションで複数回呼び出すことはできません。これは、特に %PATH% 環境変数が原因で環境変数の文字数が長くなりすぎないようにします。設定可能な文字数を超えると、ターミナルセッションで予期しない動作を招くことがあるため回避する必要があります。

この動作は、setvars.bat | oneapi-vars.bat--force フラグを渡すことで上書きできます。この例では、ユーザーは setvars.bat | oneapi-vars.bat を 2 回実行しようとします。setvars.bat | oneapi-vars.bat がすでに実行されているため、2 回目の実行は停止します。

コンポーネント・ディレクトリー・レイアウト

> <install-dir>\setvars.bat 
:: initializing oneAPI environment ...(SNIP: lot of output)
:: oneAPI environment initialized
> <install-dir>\setvars.bat 
.. code-block:: WARNING: setvars.bat has already been run.Skipping re-execution. 
   To force a re-execution of setvars.bat, use the '--force' option. 
   Using '--force' can result in excessive use of your environment variables.

次は、ユーザーが <install-dir>\setvars.bat --force を実行し、初期化が成功した例です。

> <install-dir>\setvars.bat --force 
:: initializing oneAPI environment ...(SNIP: lot of output)
:: oneAPI environment initialized

統合ディレクトリー・レイアウト

> <install-dir>\<toolkit-version>oneapi-vars.bat 
:: initializing oneAPI environment ...(SNIP: lot of output)
:: oneAPI environment initialized
> <install-dir>\<toolkit-version>\oneapi-vars.bat 
.. code-block:: WARNING: oneapi-vars.bat has already been run.Skipping re-execution. 
   To force a re-execution of oneapi-vars.bat, use the '--force' option. 
   Using '--force' can result in excessive use of your environment variables.

次は、ユーザーが <install-dir>\<toolkit-version>\oneapi-vars.bat --force を実行し、初期化が成功した例です。

> <install-dir>\<toolkit-version>\oneapi-vars.bat --force 
:: initializing oneAPI environment ...(SNIP: lot of output) 
:: oneAPI environment initialized

統合ディレクトリー・レイアウトの環境変数の初期化

統合ディレクトリー・レイアウトの環境の初期化は、setvars.bat スクリプトではなく、oneapi-vars.bat スクリプトによって実行されます。oneapi-vars の使用方法は setvars と似ていますが、微妙な違いがいくつかあります。

setvars スクリプトと oneapi-vars スクリプトの主な違いは、setvars スクリプトでは環境変数 (ONEAPI_ROOT 以外) が定義されないのに対し、oneapi-vars スクリプトでは共通の環境変数が定義される点です。

コンポーネント・ディレクトリー・レイアウトでは、各コンポーネントが機能するのに必要な環境変数を定義する役割を持ちます。たとえば、コンポーネント・ディレクトリー・レイアウトでは、各コンポーネントはリンク可能なライブラリー・フォルダーを LD_LIBRARY_PATH に追加し、ヘッダーを CPATH などにインクルードします。コンポーネントは、常に次の場所にある個別の vars スクリプトを使用してこれを実行します:

%ONEAPI_ROOT%\<toolkit-version>\opt\<component-name>\latest\env\vars.bat

統合ディレクトリー・レイアウトは、外部向けの include、lib、bin フォルダーを共通フォルダーのセットに結合します。このシナリオでは、最上位の oneapi-vars スクリプトは、これらの共通フォルダーを見つけるのに必要な環境変数を定義します。たとえば、setvars は LD_LIBRARY_PATH を $ONEAPI_ROOT\lib として定義し、CPATH を $ONEAPI_ROOT\include として定義します。

ONEAPI_ROOT 環境変数

ONEAPI_ROOT 環境変数は、いずれかのスクリプトが実行されると、最上位の setvars.bat およびoneapi-vars.bat スクリプトによって設定されます。ONEAPI_ROOT 環境変数がすでに設定されている場合、setvars.bat | oneapi-vars.bat は、 setvars.bat または| oneapi-vars.bat スクリプトを実行した cmd.exe セッションでそれを上書きします。この変数は、oneapi-cli サンプルブラウザーと Microsoft Visual Studio* および Visual Studio Code* サンプルブラウザーによって使用され、oneAPI ツールとコンポーネントを検出するのに役立ちます。特に SETVARS_CONFIG 機能が有効ある場合にsetvars.batoneapi-vars.bat スクリプトを検出するのに有用です。SETVARS_CONFIG 機能の詳細については、Microsoft Visual Studio* で setvars.bat スクリプトを自動化をご覧ください。

2024.0 リリースでは、インストーラーは ONEAPI_ROOT 変数を環境に追加しません。これをデフォルト環境に追加するには、ローカルシェルの初期化ファイル、またはシステム環境変数で変数を定義します。

Microsoft Visual Studio* vcvarsall.bat 構成スクリプトの呼び出しをカスタマイズ

インテル® oneAPI 開発環境には、コマンドプロンプトで Visual Studio* プロジェクトを操作するサポートが含まれています。たとえば、“[Windows スタート メニュー] > [すべて] > [Visual Studio 2022]” フォルダーには、通常、“[Developer Command Prompt for VS 2022]” ショートカットなど、複数の事前構成された Visual Studio* セットアップ・スクリプトへのショートカットが含まれています。これらのショートカットは、通常 “%ProgramFiles%\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\“ ディレクトリーにある vcvarsall.bat という名前の Microsoft Visual Studio* 構成バッチファイルを呼び出します。

コマンドプロンプトでインテル® oneAPI 環境セットアップ・スクリプト (setvars.bat) を呼び出すと、oneAPI 環境セットアップ・プロセスの一部として Visual Studio* の vcvarsall.bat スクリプトが呼び出されます。通常、vcvarsall.bat 環境設定は、setvars.bat 環境設定と一致するように構成されます。たとえば、setvars.bat が 64 ビット oneAPI 開発環境用にセットアップされている場合 (デフォルト)、Visual Studio* の vcvarsall.bat が 64 ビット・アプリケーション開発用にセットアップされていることが保証されます。

setvars.bat (またはコンパイラーの env\vars.bat) が、Visual Studio* の vcvarsall.bat がすでに実行されていることを検出すると、vcvarsall.bat は 2 度目に実行されません。つまり、setvars.bat スクリプトは既存の Visual Studio* の vcvarsall.bat 環境を尊重し、それに合わせて (64 ビットの場合は 64 ビット、32 ビットの場合は 32 ビット) 構成します。

32 ビットまたは 64 ビットの引数以外、setvars.bat およびコンパイラーの env\vars.bat スクリプトは、vcvarsall.bat スクリプトに引数を渡しません。Visual Studio* 環境をさらにカスタマイズする場合、setvars.bat またはコンパイラーのenv\vars.bat スクリプトを実行する前にカスタマイズする必要があります。以下に例を示します:

  • 必要な引数を指定して vcvarsall.bat を直接実行します

  • setvars.bat (またはコンパイラ-の env\vars.bat) スクリプトを実行します

この時点で、コマンドプロンプト開発環境が構成されます。

Visual Studio 2022 Professiona* エディションのインストールで使用可能な vcvarsall.bat 引数は、Windows* command プロンプトで次のように入力して確認できます。

> "%ProgramFiles%\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsall.bat" help

VS2022INSTALLDIR と VS2019INSTALLDIR 環境変数を使用

setvars.bat、oneapi-vars.bat または compiler\<version>\env\vars.bat スクリプトの実行時に次のようなメッセージが表示される場合:

WARNING: Visual Studio was not found in a standard install location: 
  "%ProgramFiles%\\Microsoft Visual Studio\\<Year>\\<Edition>" or 
  "%ProgramFiles(x86)%\\Microsoft Visual Studio\\<Year>\\<Edition>" 
Set the VS2019INSTALLDIR or VS2022INSTALLDIR 
environment variable to point to your install location and try again.

おそらく、次のいずれかであることを意味します:

  • Microsoft Visual Studio* がインストールされていません。

  • Microsoft Visual Studio* が標準以外の場所にインストールされています。

  • Microsoft Build Tools* のみがインストールされています。

最初の項目の場合は、Microsoft Visual Studio* をインストールします。インストールが完了したら、env スクリプトを再度実行してみてください。

2 番目の項目の場合、環境セットアップ・スクリプトを実行する前に、VS2022INSTALLDIR 環境変数 (Visual Studio* 2019 を使用している場合は VS2019INSTALLDIR) が Microsoft Visual Studio* インストールの非標準の場所を指すように構成します。例えば、Visual Studio 2022 Professiona*l エディションと setvars.bat の標準以外の場所を想定します:

> set "VS2022INSTALLDIR=C:\my\custom\install\path\Microsoft Visual Studio\2022\Professional" 
> "%ProgramFiles(x86)%\Intel\oneAPI\setvars.bat"

または、Visual Studio* 2022 ビルドツールを標準の場所にインストールした場合、VS2022INSTALLDIR がそのインストール場所を示すように設定する必要があります。たとえば、setvars.bat を使用します:

> set "VS2022INSTALLDIR=%ProgramFiles(x86)%\Microsoft Visual Studio\2022\BuildTools" 
> "%ProgramFiles(x86)%\Intel\oneAPI\setvars.bat"