diff --git a/modules/cudev/CMakeLists.txt b/modules/cudev/CMakeLists.txt
index 6a2e0380bc..3c7b0592c7 100644
--- a/modules/cudev/CMakeLists.txt
+++ b/modules/cudev/CMakeLists.txt
@@ -8,28 +8,14 @@ ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4189 /wd4505 -Wundef -Wmissing-declarati
 
 ocv_add_module(cudev)
 
-file(GLOB_RECURSE lib_hdrs "include/opencv2/*.hpp")
-
-add_custom_target(${the_module} SOURCES ${lib_hdrs})
-
-if(ENABLE_SOLUTION_FOLDERS)
-  set_target_properties(${the_module} PROPERTIES FOLDER "modules")
-endif()
-
-foreach(var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG)
-  # we remove /EHa as it generates warnings under windows
-  string(REPLACE "/EHa" "" ${var} "${${var}}")
+ocv_module_include_directories(opencv_core)
 
-  # we remove -ggdb3 flag as it leads to preprocessor errors when compiling CUDA files (CUDA 4.1)
-  string(REPLACE "-ggdb3" "" ${var} "${${var}}")
+file(GLOB_RECURSE lib_hdrs "include/opencv2/*.hpp")
+file(GLOB         lib_srcs "src/*.cpp")
 
-  # we remove -Wsign-promo as it generates warnings under linux
-  string(REPLACE "-Wsign-promo" "" ${var} "${${var}}")
+ocv_set_module_sources(HEADERS ${lib_hdrs} SOURCES ${lib_srcs})
 
-  # we remove -fvisibility-inlines-hidden because it's used for C++ compiler
-  # but NVCC uses C compiler by default
-  string(REPLACE "-fvisibility-inlines-hidden" "" ${var} "${${var}}")
-endforeach()
+ocv_create_module()
 
 if(BUILD_TESTS)
   add_subdirectory(test)
diff --git a/modules/cudev/src/stub.cpp b/modules/cudev/src/stub.cpp
new file mode 100644
index 0000000000..ec060adedc
--- /dev/null
+++ b/modules/cudev/src/stub.cpp
@@ -0,0 +1,11 @@
+#include <opencv2/core/cvdef.h>
+
+namespace cv { namespace cudev {
+
+CV_EXPORTS void stubFunc();
+
+}}
+
+void cv::cudev::stubFunc()
+{
+}
diff --git a/modules/cudev/test/CMakeLists.txt b/modules/cudev/test/CMakeLists.txt
index e233482a50..438e0a64c0 100644
--- a/modules/cudev/test/CMakeLists.txt
+++ b/modules/cudev/test/CMakeLists.txt
@@ -1,4 +1,4 @@
-set(test_deps opencv_core opencv_imgproc opencv_highgui opencv_ts ${OPENCV_MODULE_opencv_ts_DEPS})
+set(test_deps opencv_cudev opencv_core opencv_imgproc opencv_highgui opencv_ts ${OPENCV_MODULE_opencv_ts_DEPS})
 
 ocv_check_dependencies(${test_deps})
 
@@ -13,6 +13,21 @@ if(OCV_DEPENDENCIES_FOUND)
   source_group("Include" FILES ${test_hdrs})
   set(OPENCV_TEST_${the_module}_SOURCES ${test_srcs} ${test_hdrs})
 
+  foreach(var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG)
+    # we remove /EHa as it generates warnings under windows
+    string(REPLACE "/EHa" "" ${var} "${${var}}")
+
+    # we remove -ggdb3 flag as it leads to preprocessor errors when compiling CUDA files (CUDA 4.1)
+    string(REPLACE "-ggdb3" "" ${var} "${${var}}")
+
+    # we remove -Wsign-promo as it generates warnings under linux
+    string(REPLACE "-Wsign-promo" "" ${var} "${${var}}")
+
+    # we remove -fvisibility-inlines-hidden because it's used for C++ compiler
+    # but NVCC uses C compiler by default
+    string(REPLACE "-fvisibility-inlines-hidden" "" ${var} "${${var}}")
+  endforeach()
+
   CUDA_ADD_EXECUTABLE(${the_target} ${OPENCV_TEST_${the_module}_SOURCES})
   target_link_libraries(${the_target} ${test_deps} ${OPENCV_LINKER_LIBS} ${CUDA_LIBRARIES})
   add_dependencies(opencv_tests ${the_target})