2016-03-15 7 views
5

ファイルがあるとします。foo.cppとしましょう。私の目標はnvccでcudaモードにコンパイルすることです。コマンドラインから、これは簡単に呼び出すことによって達成することができます。CMake + Cuda:Cuda-mode(-x = cu)でcppファイルをコンパイルする

nvcc --x=cu foo.cpp

を私は苦労してる何、CMakeのは、これと同じことを行うために取得することです。 CMakeコマンドcuda_add_executable(foo foo.cpp)は* .cppファイルをフィルタリングし、(nvccではなく)C++コンパイラを使用することが判明しました。

すべてのファイルの名前を* .cuに変更することは、コードベースが非cudaビルドもサポートする必要があるため、オプションではありません。

+0

CMAKE g ++コンパイラを設定してそのフラグを設定できますか? – xhg

答えて

4

FindCUDA source codeでは、特定の非.cuファイルに対してCUDAコンパイルを有効にするオプションが見つかりました。ドキュメントはソースコードの外では不足しているようですが。

後でCMAKE 3.3または

set_source_files_properties(foo.cpp PROPERTIES CUDA_SOURCE_PROPERTY_FORMAT OBJ) 

でファイルあたりのレベルにCUDAのコンパイルを設定することができます。

残りはいつものように動作します。

cuda_add_executable(foo foo.cpp) 

が実は、私は残念ながら、それは動作しませんで--x=cuフラグを渡すためにCUDA_NVCC_FLAGScuda_add_executable(... OPTIONS --x=cu)を使用してのような簡単な解決策があるはずです期待しました。その理由は、おそらく、そのレベルの設定の範囲は、すべてのファイルに影響するため、有用ではないと考えられます。