其他分享
首页 > 其他分享> > 使用原生CUDA支持的CMake获取C目标中的CUDA包含目录吗?

使用原生CUDA支持的CMake获取C目标中的CUDA包含目录吗?

作者:互联网

在CMake 3.8版中,引入了对CUDA语言的原生支持.当项目使用CUDA作为其语言之一时,CMake将继续查找CUDA(例如,它找到nvcc二进制文件).

只要您只编译CUDA代码-就足够了.但是,如果您想在该项目中编译C目标怎么办? CUDA包含不是自动生成的,并且CMakeCache.txt似乎在任何地方都不包含CUDA包含路径.

即使CMake本身已经找到CUDA时,我是否真的必须运行某些find_package(需要CUDA 9.0)?或者-我可以通过其他方式获取include目录吗?

解决方法:

可以从CMake变量CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES检索由CMAKE_CUDA_COMPILER设置的编译器使用的包含目录.

为了获取库,最好的方法可能是将find_library()与CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES结合使用.

例:

cmake_minimum_required(VERSION 3.9)
project(MyProject VERSION 1.0)
enable_language(CUDA)

find_library(CUDART_LIBRARY cudart ${CMAKE_CUDA_IMPLICIT_LINK_DIRECTORIES})

add_executable(binary_linking_to_cudart my_cpp_file_using_cudart.cpp)
target_include_directories(binary_linking_to_cudart PRIVATE ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
target_link_libraries(binary_linking_to_cudart ${CUDART_LIBRARY})

CMake错误跟踪器上也讨论了此问题:Provide target libraries for cuda libraries.

标签:c,cuda,cmake,include-path
来源: https://codeday.me/bug/20191011/1889292.html