Cmake Find Cuda

This script locates the NVIDIA CUDA toolkit and the associated libraries, butdoes not require the CUDA language be enabled for a given project. Thismodule does not search for the NVIDIA CUDA Samples.

New in version 3.19: QNX support.

Search Behavior¶

CMake seems to be unable to find CUDA, catkin build brings: CMake Error at /home/nvidia/driverws/src/sekonixcamera/cmake/FindCUDA.cmake:655 (message): Specify CUDATOOLKITROOTDIR Call Stack (most recent call first): CMakeLists.txt:19 (findpackage) I added set(CUDATOOLKITROOTDIR /usr/local/cuda-10.2) to the CMakeLists.txt but that didn’t solve the problem. FindCMake.cmake looks for /usr/local/cuda. In your case, that directory might not be there. Just create a symbolic link of that name to your actual CUDA installation directory: $ sudo ln -s /usr/local/cuda-5.5 /usr/local/cuda. Your CMake should be able to generate the Makefile for your project now.

The CUDA Toolkit search behavior uses the following order:

  1. If the CUDA language has been enabled we will use the directorycontaining the compiler as the first search location for nvcc.

  2. If the CUDAToolkit_ROOT cmake configuration variable (e.g.,-DCUDAToolkit_ROOT=/some/path) or environment variable is defined, itwill be searched. If both an environment variable and aconfiguration variable are specified, the configuration variable takesprecedence.

    The directory specified here must be such that the executable nvcc orthe appropriate version.txt file can be found underneath the specifieddirectory.

  3. If the CUDA_PATH environment variable is defined, it will be searchedfor nvcc.

  4. The user's path is searched for nvcc using find_program(). Ifthis is found, no subsequent search attempts are performed. Users areresponsible for ensuring that the first nvcc to show up in the path isthe desired path in the event that multiple CUDA Toolkits are installed.

  5. On Unix systems, if the symbolic link /usr/local/cuda exists, this isused. No subsequent search attempts are performed. No default symbolic linklocation exists for the Windows platform.

  6. The platform specific default install locations are searched. If exactly onecandidate is found, this is used. The default CUDA Toolkit install locationssearched are:


    Search Pattern



    Other Unix




    Where X.Y would be a specific version of the CUDA Toolkit, such as/usr/local/cuda-9.0 orC:ProgramFilesNVIDIAGPUComputingToolkitCUDAv9.0


    When multiple CUDA Toolkits are installed in the default location of asystem (e.g., both /usr/local/cuda-9.0 and /usr/local/cuda-10.0exist but the /usr/local/cuda symbolic link does not exist), thispackage is marked as not found.

    There are too many factors involved in making an automatic decision inthe presence of multiple CUDA Toolkits being installed. In thissituation, users are encouraged to either (1) set CUDAToolkit_ROOT or(2) ensure that the correct nvcc executable shows up in $PATH forfind_program() to find.



If specified, describes the version of the CUDA Toolkit to search for.


If specified, configuration will error if a suitable CUDA Toolkit is notfound.


If specified, the search for a suitable CUDA Toolkit will not produce anymessages.


If specified, the CUDA Toolkit is considered found only if the exactVERSION specified is recovered.

Imported targets¶

An imported target named CUDA::toolkit is provided.

This module defines IMPORTED targets for eachof the following libraries that are part of the CUDAToolkit:

CUDA Runtime Library¶

The CUDA Runtime library (cudart) are what most applications will typicallyneed to link against to make any calls such as cudaMalloc, and cudaFree.

Targets Created:

  • CUDA::cudart

  • CUDA::cudart_static

CUDA Driver Library¶

The CUDA Driver library (cuda) are used by applications that use callssuch as cuMemAlloc, and cuMemFree. This is generally used by advanced

Targets Created:

  • CUDA::cuda_driver

  • CUDA::cuda_driver


The cuBLAS library.

Targets Created:

  • CUDA::cublas

  • CUDA::cublas_static

  • CUDA::cublasLt starting in CUDA 10.1

  • CUDA::cublasLt_static starting in CUDA 10.1


The cuFFT library.

Targets Created:

  • CUDA::cufft

  • CUDA::cufftw

  • CUDA::cufft_static

  • CUDA::cufftw_static


The cuRAND library.

Targets Created:

  • CUDA::curand

  • CUDA::curand_static


The cuSOLVER library.

Targets Created:

  • CUDA::cusolver

  • CUDA::cusolver_static


The cuSPARSE library.

Targets Created:

  • CUDA::cusparse

  • CUDA::cusparse_static


The NVIDIA CUDA Profiling Tools Interface.

Targets Created:

  • CUDA::cupti

  • CUDA::cupti_static


The NPP libraries.

Targets Created:

  • nppc:

    • CUDA::nppc

    • CUDA::nppc_static

  • nppial: Arithmetic and logical operation functions in nppi_arithmetic_and_logical_operations.h

    • CUDA::nppial

    • CUDA::nppial_static

  • nppicc: Color conversion and sampling functions in nppi_color_conversion.h

    • CUDA::nppicc

    • CUDA::nppicc_static

  • nppicom: JPEG compression and decompression functions in nppi_compression_functions.hRemoved starting in CUDA 11.0, use nvJPEG instead.

    • CUDA::nppicom

    • CUDA::nppicom_static

  • nppidei: Data exchange and initialization functions in nppi_data_exchange_and_initialization.h

    • CUDA::nppidei

    • CUDA::nppidei_static

  • nppif: Filtering and computer vision functions in nppi_filter_functions.h

    • CUDA::nppif

    • CUDA::nppif_static

  • nppig: Geometry transformation functions found in nppi_geometry_transforms.h

    • CUDA::nppig

    • CUDA::nppig_static

  • nppim: Morphological operation functions found in nppi_morphological_operations.h

    • CUDA::nppim

    • CUDA::nppim_static

  • nppist: Statistics and linear transform in nppi_statistics_functions.h and nppi_linear_transforms.h

    • CUDA::nppist

    • CUDA::nppist_static

  • nppisu: Memory support functions in nppi_support_functions.h

    • CUDA::nppisu

    • CUDA::nppisu_static

  • nppitc: Threshold and compare operation functions in nppi_threshold_and_compare_operations.h

    • CUDA::nppitc

    • CUDA::nppitc_static

  • npps:

    • CUDA::npps

    • CUDA::npps_static


The nvBLAS libraries.This is a shared library only.

Targets Created:

  • CUDA::nvblas


The nvGRAPH library.Removed starting in CUDA 11.0

Targets Created:

  • CUDA::nvgraph

  • CUDA::nvgraph_static


The nvJPEG library.Introduced in CUDA 10.

Cmake Find Cuda

Targets Created:

  • CUDA::nvjpeg

  • CUDA::nvjpeg_static


The nvRTC (Runtime Compilation) library.This is a shared library only.

Targets Created:

  • CUDA::nvrtc


The NVIDIA Management Library.This is a shared library only.

Targets Created:

  • CUDA::nvml


The NVIDIA Tools Extension.This is a shared library only.

Targets Created:

  • CUDA::nvToolsExt


The NVIDIA OpenCL Library.This is a shared library only.

Targets Created:

  • CUDA::OpenCL


The cuLIBOS library is a backend thread abstraction layer library which isstatic only. The CUDA::cublas_static, CUDA::cusparse_static,CUDA::cufft_static, CUDA::curand_static, and (when implemented) NPPlibraries all automatically have this dependency linked.

Target Created:

  • CUDA::culibos

Note: direct usage of this target by consumers should not be necessary.

Cmake Find Cuda Company

Result variables¶


A boolean specifying whether or not the CUDA Toolkit was found.


The exact version of the CUDA Toolkit found (as reported bynvcc--version or version.txt).


The major version of the CUDA Toolkit.


The minor version of the CUDA Toolkit.

Cmake Find Cuda Version


The patch version of the CUDA Toolkit.


The path to the CUDA Toolkit library directory that contains the CUDAexecutable nvcc.


The path to the CUDA Toolkit include folder containing the header filesrequired to compile a project linking against CUDA.


The path to the CUDA Toolkit library directory that contains the CUDARuntime library cudart.


The path to the CUDA Toolkit directory containing the nvvm directory andversion.txt.


The path to the CUDA Toolkit directory including the target architecturewhen cross-compiling. When not cross-compiling this will be equivalent tothe parent directory of CUDAToolkit_BIN_DIR.


The path to the NVIDIA CUDA compiler nvcc. Note that this path maynot be the same as_COMPILER'>CMAKE_CUDA_COMPILER. nvcc must befound to determine the CUDA Toolkit version as well as determining otherfeatures of the Toolkit. This variable is set for the convenience ofmodules that depend on this one.

Please provide the following info:
Hardware Platform: DRIVE AGX Xavier™ Developer Kit
Software Version: DRIVE Software 10
Host Machine Version: native Ubuntu 18.04
SDK Manager Version:


I’m having a problem trying to compile this sekonix_camera GMSL ROS-wrapper on the target machine.

CMake seems to be unable to find CUDA, catkin build brings:

I added set(CUDA_TOOLKIT_ROOT_DIR /usr/local/cuda-10.2) to the CMakeLists.txt but that didn’t solve the problem:

What path should I set CUDA_NVCC_EXECUTABLE, CUDA_INCLUDE_DIRS and CUDA_CUDART_LIBRARY to; or is there something else wrong?

Also I’m quite confused becuase calling nvcc doesn’t work:

I actually installed CUDA during flashing. Also, it seemed to be installed at /usr/local/cuda

Thanks in advance!

Best regards,