【问题标题】:Cmake - Add all CUDA librariesCmake - 添加所有 CUDA 库
【发布时间】:2017-03-25 00:14:56
【问题描述】:

我正在尝试使用 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_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})

【问题讨论】:

    标签: cuda cmake


    【解决方案1】:

    为了添加lib\x64文件夹中的所有库,可以将以下库添加到您的target_link_libraries

    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})
    

    有关这些 CMAKE 命令的更多详细信息,请访问FindCUDA CMAKE docs

    【讨论】:

    • 您可以定义一个变量 $(CUDA_all_LIBRARIES} 并设置它 - 并将其放入 CMake 模块中 - 这样您就不必在每个项目中重复这个超长的行了。
    猜你喜欢
    • 2013-08-18
    • 2021-06-06
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多