diff --git a/CMakeLists.txt b/CMakeLists.txt
index 94365d119e911c0329dfe42f05cb71448e23a87f..0bd94e50722a6b15e10e1ee1f6f7090d303d7387 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -120,13 +120,16 @@ if(ARB_GPU STREQUAL "cuda")
     set(CMAKE_CUDA_HOST_COMPILER ${CMAKE_CXX_COMPILER})
     enable_language(CUDA)
     find_package(CUDAToolkit)
-    if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
-        if(CUDAToolkit_VERSION_MAJOR GREATER 10)
-            set(CMAKE_CUDA_ARCHITECTURES 60 70 80)
-        else()
-            set(CMAKE_CUDA_ARCHITECTURES 60 70)
-        endif()
+    if(CUDAToolkit_VERSION_MAJOR GREATER 10)
+        set(CMAKE_CUDA_ARCHITECTURES 60 70 80)
+    else()
+        set(CMAKE_CUDA_ARCHITECTURES 60 70)
     endif()
+    # We _still_ need this otherwise CUDA symbols will not be exported
+    # from libarbor.a leading to linker errors when link external clients.
+    # Unit tests are NOT external enough. Re-review this somewhere in the
+    # future.
+    find_package(CUDA ${CUDAToolkit_VERSION_MAJOR} REQUIRED)
 elseif(ARB_GPU STREQUAL "cuda-clang")
     include(FindCUDAToolkit)
     set(ARB_WITH_CUDA_CLANG TRUE)