--- a/devices/CMakeLists.txt
+++ b/devices/CMakeLists.txt
@@ -21,19 +21,23 @@ if(OIDN_DEVICE_SYCL)
   set_property(CACHE OIDN_DEVICE_CUDA_API PROPERTY STRINGS "Driver" "RuntimeStatic" "RuntimeShared")
   mark_as_advanced(OIDN_DEVICE_CUDA_API)

-  # We need to build this an external project because we might need to switch to clang-cl
-  # CMake does not support GNU-like compilers for CUDA
-  if(WIN32 AND CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND NOT MSVC)
-    # Check the generator
-    if(NOT CMAKE_GENERATOR MATCHES "Ninja" AND NOT CMAKE_GENERATOR MATCHES "Unix Makefiles")
-      message(FATAL_ERROR "Building with CUDA support requires Ninja or Make")
-    endif()
-
-    get_filename_component(_cxx_compiler_dir ${CMAKE_CXX_COMPILER} DIRECTORY)
-    set(_host_compiler ${_cxx_compiler_dir}/clang-cl.exe)
-  else()
-    set(_host_compiler ${CMAKE_CXX_COMPILER})
-  endif()
+  # Find CUDA compiler
+  find_program(OIDN_DEVICE_CUDA_COMPILER
+    NAMES
+      clang++
+      g++
+    HINTS
+      ${PATH}
+      ${CUDA_COMPILER_PATH}
+    PATH_SUFFIXES
+      bin
+      llvm/bin
+    NO_DEFAULT_PATH
+    REQUIRED
+    DOC
+    "CUDA compiler."
+  )
+  mark_as_advanced(OIDN_DEVICE_CUDA_COMPILER)

   list(JOIN CMAKE_PREFIX_PATH "|" _prefix_path_str)

@@ -45,7 +49,8 @@ if(OIDN_DEVICE_CUDA)
     LIST_SEPARATOR |
     CMAKE_CACHE_ARGS
       -DCMAKE_PREFIX_PATH:STRING=${_prefix_path_str}
-      -DCMAKE_CXX_COMPILER:FILEPATH=${_host_compiler}
+      -DCMAKE_CUDA_COMPILER:FILEPATH=${OIDN_DEVICE_CUDA_COMPILER}
+      -DCMAKE_CUDA_HOST_COMPILER:FILEPATH=${CUDA_COMPILER_PATH}
       -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${CMAKE_TOOLCHAIN_FILE}
       -DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
       -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_CURRENT_BINARY_DIR}/cuda/preinstall
--- a/core/math.h
+++ b/core/math.h
@@ -4,6 +4,8 @@
 #pragma once

 #include "common/platform.h"
+using std::min;
+using std::max;

 OIDN_NAMESPACE_BEGIN
 namespace math {
