データ並列 C++ (DPC++) での CMake の使用

次の内容は OS 固有です。

Linux*

Linux* では、インテル® oneAPI DPC++/C++ コンパイラー (dpcpp) での CMake の使用がサポートされています。CXX または CMAKE_CXX_COMPILER 文字列を dpcpp に設定する必要があります。次に例を示します。

$ CXX=dpcpp cmake ../ 

-または-

$ cmake –DCMAKE_CXX_COMPILER=dpcpp ../ 

Make と Ninja ジェネレーターもサポートされています。

Windows*

CMake を使用してインテル® oneAPI DPC++/C++ コンパイラーでコンパイルする場合、ビルドシステムの生成ターゲットによって動作が異なります。サポートされているジェネレーターは、Microsoft* Visual Studio* と Make / Ninja です。

サポート

インテルは、CMake でインテル® oneAPI DPC++/C++ コンパイラーがサポートされるように取り組んでいます。

dpcpp.exe をリンカーとして使用するように CMake に指示するいくつかの回避策があります。具体的なビルドターゲットの考慮事項は、以下の表を参照してください。

ターゲットタイプ ステータス

実行ファイル

回避方法あり

「回避方法」を参照してください。

ライブラリー (スタティック)

回避方法あり

「回避方法」を参照してください。

llvm-arllvm-ranlib の要件に注意してください。

ライブラリー (共有)

失敗 (ソリューションはあるが未検証)

MVC フラグと非 MVC フラグが混在する場合、互換性がないため問題が発生します。

回避方法

次の CMake フラグ / ディレクティブを projects() 行の前に設定します。

``` 

set(CMAKE_CXX_COMPILER "dpcpp") 
include (Platform/Windows-Clang) 
set(CMAKE_LINKER "dpcpp") 
set(CMAKE_AR "llvm-ar") 
set(CMAKE_RANLIB "llvm-ranlib") 
set(CMAKE_CXX_STANDARD 17) 
set(CMAKE_CXX_FLAGS "/EHsc") 
 
project(project-name CXX) 

``` 

スタティック・ライブラリー・ターゲットの場合、PATHllvm-arllvm-ranlib を追加する必要があります。llvm-ar はインテル® oneAPI DPC++/C++ コンパイラーに含まれていますが、llvm-ranlib は含まれていません。llvm-ranlib は、Visual Studio* の Package Manager から利用可能な LLVM / Clang インストールの一部である、Python* 向けインテル® ディストリビューションに含まれています。