2017-03-25 21 views
0

CMAKEを使用してVS 2015ソリューションにインストール済みのCUDA 8.0ライブラリをすべて追加しようとしています。しかし、現在のCMakeLists.txtファイルでは、自分の入力ライブラリ(プロジェクトのプロパティ - >リンカ - >入力 - >追加の依存関係)の下でcudart_static.libOpenCL.libに終わるだけです。 cusparsecusolvercufftなどのライブラリを手動で追加するのではなく、CMAKEコマンドを使用して、CUDAライブラリフォルダC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64に利用可能なライブラリをすべて含める方法がありますか?Cmake - すべてのCUDAライブラリを追加

cmake_minimum_required(VERSION 2.8) 

project(layerSeg) 

# ========================================================================== 
# find Boost 

set(Boost_USE_STATIC_LIBS OFF) 
set(Boost_USE_MULTITHREADED ON) 
set(Boost_USE_STATIC_RUNTIME OFF) 
find_package(Boost 1.63.0 REQUIRED filesystem regex) 


if(Boost_FOUND) 
    message("Boost found") 
    include_directories(${BOOST_INCLUDEDIR})   
    link_directories(${BOOST_LIBRARYDIR}) 
endif() 


# ========================================================================== 
# find CUDA 
find_package(CUDA 8.0 EXACT REQUIRED) 

if (CUDA_FOUND) 
    message("CUDA found") 
    SET(CUDA_INCLUDE_DIRS "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v8.0/include" ${CUDA_INCLUDE_DIRS}) 
    #include(FindCUDA) 
    INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS}) 
else() 
    message("CUDA not found") 
endif() 

# ========================================================================== 
# find openCV 
FIND_PACKAGE(OpenCV REQUIRED) 


if (OpenCV_FOUND) 
    message("OpenCV found") 
    INCLUDE_DIRECTORIES(${OPENCV_INCLUDE_DIR}) 
    set(CUDA_USE_STATIC_CUDA_RUNTIME ON) 
else() 
    message("OpenCV not found") 
endif() 

# ========================================================================== 
# Find ITK. 
find_package(ITK REQUIRED) 


if (ITK_FOUND) 
    message("ITK found") 
    include(${ITK_USE_FILE}) 
else() 
    message("ITK not found") 
endif() 

# ========================================================================== 
# find VTK 

find_package(VTK REQUIRED) 
if (VTK_FOUND) 
    message("VTK found") 
    #message(${VTK_DIR}) 
    #message(${VTK_USE_FILE}) 
    include(${VTK_USE_FILE}) 
else() 
    message("VTK not found") 
endif() 

# ========================================================================== 
# ========================================================================== 

add_executable(layerSeg main.cpp mainGPU.cu kernels.cu lsh.h lshGPU.h) 

target_link_libraries(layerSeg ${OpenCV_LIBS} ${CUDA_LIBRARIES} ${ITK_LIBRARIES} ${VTK_LIBRARIES} ${Boost_LIBRARIES}) 

答えて

1

lib\x64フォルダ内のすべてのライブラリを追加するためには、あなたのtarget_link_librariesに次のライブラリを追加する追加することができます。これらのCMAKEコマンドに関する

target_link_libraries(your_projectSolution_name ${CUDA_LIBRARIES} ${CUDA_CUFFT_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES} ${CUDA_cupti_LIBRARY} ${CUDA_curand_LIBRARY} ${CUDA_cusparse_LIBRARY} ${CUDA_npp_LIBRARY} ${CUDA_nppc_LIBRARY} ${CUDA_nppi_LIBRARY} ${CUDA_npps_LIBRARY} ${CUDA_nvcuvenc_LIBRARY} ${CUDA_nvcuvid_LIBRARY}) 

追加の詳細はFindCUDA CMAKE docs

で見つけることができます
+1

変数 '$(CUDA_all_LIBRARIES)'を定義し、それを設定してCMakeモジュールに入れることができるので、すべてのプロジェクトでこのスーパーロングラインを繰り返す必要はありません。 – einpoklum

関連する問題