diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake
index 031424b95..4947945dc 100644
--- a/cmake/OpenCVModule.cmake
+++ b/cmake/OpenCVModule.cmake
@@ -237,8 +237,13 @@ macro(define_opencv_moduleEx _name _visibility)
 
             #set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-keep")
             #set (CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-Xcompiler;/EHsc-;")
-    
+            
+            # we remove -ggdb3 flag as it leads to preprocessor errors when compiling CUDA files (CUDA 4.1)
+            set(tmp ${CMAKE_CXX_FLAGS_DEBUG})
+            string(REPLACE "-ggdb3" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
             CUDA_COMPILE(cuda_objs ${lib_cuda})
+            set(CMAKE_CXX_DEBUG_FLAGS ${tmp})
+
         else()
             set(lib_cuda "")
             set(cuda_objs "")
diff --git a/modules/gpu/CMakeLists.txt b/modules/gpu/CMakeLists.txt
index 8bc4446a8..3f0b98ecd 100644
--- a/modules/gpu/CMakeLists.txt
+++ b/modules/gpu/CMakeLists.txt
@@ -85,7 +85,14 @@ if (HAVE_CUDA)
         set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} "-Xcompiler;/wd4251")
     endif()
 
+	
+
+    # we remove -ggdb3 flag as it leads to preprocessor errors when compiling CUDA files (CUDA 4.1)
+    set(tmp ${CMAKE_CXX_FLAGS_DEBUG})
+    string(REPLACE "-ggdb3" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
     CUDA_COMPILE(cuda_objs ${lib_cuda} ${ncv_cuda})
+    set(CMAKE_CXX_DEBUG_FLAGS ${tmp})
+
     #CUDA_BUILD_CLEAN_TARGET()
 endif()