diff --git a/cmake/Modules/FindSDL2_main.cmake b/cmake/Modules/FindSDL2_main.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..da9e7770f097c89915b1b51350b841c873152e88
--- /dev/null
+++ b/cmake/Modules/FindSDL2_main.cmake
@@ -0,0 +1,34 @@
+# Find SDL2
+# Once done, this will define
+# 
+#  SDL2_MAIN_FOUND - system has SDL2
+#  SDL2_MAIN_INCLUDE_DIRS - SDL2 include directories
+#  SDL2_MAIN_LIBRARIES - link libraries
+
+include(LibFindMacros)
+
+libfind_pkg_check_modules(SDL2_MAIN_PKGCONF SDL2)
+
+# includes
+find_path(SDL2_MAIN_INCLUDE_DIR
+	NAMES SDL_main.h
+	PATHS
+		${SDL2_MAIN_PKGCONF_INCLUDE_DIRS}
+		"/usr/include/SDL2"
+		"/usr/local/include/SDL2"
+)
+
+# library
+find_library(SDL2_MAIN_LIBRARY
+	NAMES SDL2_main
+	PATHS
+		${SDL2_MAIN_PKGCONF_LIBRARY_DIRS}
+		"/usr/lib"
+		"/usr/local/lib"
+)
+
+
+# set include dir variables
+set(SDL2_MAIN_PROCESS_INCLUDES SDL2_MAIN_INCLUDE_DIR)
+set(SDL2_MAIN_PROCESS_LIBS SDL2_MAIN_LIBRARY)
+libfind_process(SDL2_MAIN)
diff --git a/src/sdl/CMakeLists.txt b/src/sdl/CMakeLists.txt
index 1b8ad5f5d7b701f21a217ffee22d555b4e4b7a2c..b6b120568dc267448e5542914bcd776e8dcf5402 100644
--- a/src/sdl/CMakeLists.txt
+++ b/src/sdl/CMakeLists.txt
@@ -131,6 +131,7 @@ if(${SDL2_FOUND})
 	endif()
 
 	if(MSVC)
+		find_package(SDL2_MAIN REQUIRED)
 		target_link_libraries(${SRB2_SDL2_EXE_NAME} PRIVATE
 			${SDL2_MAIN_LIBRARIES}
 		)