2017-08-27 18 views
2

CMakeとVisual Studio 2017、 を使用してコンパイルするCUDAプロジェクトを取得しようとしていますが、ビルドに失敗します。Cuda 9 RC + VS2017 + CMakeが動作しない

システム:
のWindows 10のPro x64の
Visual Studioのエンタープライズ2017年バージョン15.3.2
CUDA 9 RC(バージョン9.0.103)
CMakeの3.9.1(ジェネレータ:Visual Studioの15 2017のWin64)

ダミープロジェクト:

CMakeLists.txt

cmake_minimum_required(VERSION 3.0.0) 
project(vs17cuda) 

# Cuda is always required 
find_package(CUDA REQUIRED) 

set(CMAKE_CXX_STANDARD 11) 
set(CMAKE_CXX_STANDARD_REQUIRED ON) 
set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -std=c++11") 

add_subdirectory(src) 

のsrc/CMakeLists.txt

cuda_add_executable(vs17cuda main.cu) 
set_target_properties(vs17cuda PROPERTIES CUDA_SEPARABLE_COMPILATION ON) 
target_link_libraries(vs17cuda ${CUDA_LIBRARIES}) 

のsrc/main.cu

#include <cuda_runtime.h> 

__global__ void DummyKernel() 
{ 
    //do nothing 
} 

int main (int argc, char * argv[]) { 
    DummyKernel<<<4, 4>>>(); 
} 

コンソール出力:(英語に翻訳ドイツ語のメッセージ)

1>------ Build started: Project: vs17cuda, Configuration: Debug x64 ------ 
1>Building NVCC (Device) object src/CMakeFiles/vs17cuda.dir/Debug/vs17cuda_generated_main.cu.obj 
1>Failed to run C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/bin/cl.exe (File not found). 
1> 
1>). 
1>CMake Error at vs17cuda_generated_main.cu.obj.Debug.cmake:222 (message): 
1> Error generating 
1> C:/Users/Sebastian/Documents/C++/vs17cuda/build/src/CMakeFiles/vs17cuda.dir//Debug/vs17cuda_generated_main.cu.obj 
1> 
1> 
1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(171,5): error MSB6006: "cmd.exe" exited with code 1. 
1>Done building project "vs17cuda.vcxproj" -- FAILED. 
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ========== 

どのようにすることができますビルドは修正されましたか?

答えて

0

CUDAはCMakeと完全に統合されているようです。 cuda_add_executableのようなFindCUDAパッケージの関数は、デフォルトのadd_executableに戻ります。詳細は、NVIDIAの最近のブログ記事:hereに詳しく説明されています。私はその投稿にリンクされたGithubのレポをクローンし、それは私のために働いた。ただし、64ビットのビルドの場合のみです。

+0

これは私のために働く。 私はまた別の解決策を見つけました。MVCCにプロジェクトを生成させるだけです。これはMVCCコンパイラがCMakeListsの変更を検出するたびに実行されます。私は使用しません。最初のものを除いて、世代のCMake GUI。 – Shaman

関連する問題