私はCUDA 7.5でUbuntu 15.10を実行しています。 CMmakeはv3.2.2、NVCCはリリース7.5、v7.5.17、 GCCは、通常のプロジェクトでC++ 11のトリガUbuntuの5.2.1-22ubuntu2のv5.2.1CMakeでNVCCでC++ 11をサポートする
は簡単ですされています
find_package(CUDA REQUIRED)
CUDA_ADD_EXECUTABLE(foo ${foo_src} ${foo_hdr} ${foo_cu})
:
project(foo CXX)
set(TARGET foo CMAKE_CXX_STANDARD 11)
私は私のCUDAプロジェクトを定義していますしかし、C++ 11のサポートはNVCCに伝播しません。私は追加する必要があります:
list(APPEND CUDA_NVCC_FLAGS "-std=c++11")
これはkludgeのようです。最近、this taskによればこの作業が明らかに進められましたが、結果を見つけることができませんでした。
C++ 11としてプロジェクトを宣言するときにCMakeが自動的にC++ 11フラグを設定するにはどうすればよいですか?
編集:私はCUDA 8.0とCMake 3.5.1でこの質問に戻ってきました。
set (CMAKE_CXX_FLAGS "--std=c++11")
set (CUDA_PROPAGATE_HOST_FLAGS ON)
しかし、set(CMAKE_CXX_STANDARD 11)
はCMAKE_CXX_FLAGS
に影響を与えないので、以下のコンパイラを与える:以下は、CPPとNVCCの両方のためのC++ 11をトリガーするようdocumentationから
、set(CUDA_PROPAGATE_HOST_FLAGS ON)
は、CMAKE_CXX_FLAGS
の内容を伝播します
set (CMAKE_CXX_STANDARD 11)
set (CUDA_PROPAGATE_HOST_FLAGS ON)
明示的に01を設定することを避けるCMakeコマンドの組み合わせを見つけることができないようですCXXまたはCUDAフラグのいずれかの。
がONにCUDA_PROPAGATE_HOST_FLAGSを設定してみてくださいだろう。 – Hopobcn
CUDA_PROPAGATE_HOST_FLAGSをONに設定しようとしました。うまくいきませんでした。 コマンドセット(TARGET foo CMAKE_CXX_STANDARD 11)は、コンパイラでC++ 11サポートを既に起動しています。その上にセット(CMAKE_CXX_FLAGS "-std = C++ 11")を追加するために冗長なようだ。 –
私はこの機能はあなたのcmakeのバージョンに依存すると思います。私の場合、cmake 3.5.0では '-std = C++ 11'で' CMAKE_CXX_FLAGS'を設定し、 '--std C++ 11'(nvccに)を追加するには' CUDA_PROPAGATE_HOST_FLAGS'を自動的に起動します。 – Hopobcn