diff --git a/.gitmodules b/.gitmodules
index a232b78dcf..189633dc58 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -84,6 +84,9 @@
[submodule "Externals/Vulkan-Headers"]
path = Externals/Vulkan-Headers
url = https://github.com/KhronosGroup/Vulkan-Headers.git
+[submodule "Externals/watcher/watcher"]
+ path = Externals/watcher/watcher
+ url = https://github.com/e-dant/watcher.git
[submodule "Externals/SFML/SFML"]
path = Externals/SFML/SFML
url = https://github.com/SFML/SFML.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1b4202975d..549007ddd6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -784,6 +784,8 @@ if (USE_RETRO_ACHIEVEMENTS)
add_subdirectory(Externals/rcheevos)
endif()
+add_subdirectory(Externals/watcher)
+
########################################
# Pre-build events: Define configuration variables and write SCM info header
#
diff --git a/Externals/watcher/CMakeLists.txt b/Externals/watcher/CMakeLists.txt
new file mode 100644
index 0000000000..097f16d647
--- /dev/null
+++ b/Externals/watcher/CMakeLists.txt
@@ -0,0 +1,4 @@
+add_library(watcher INTERFACE IMPORTED GLOBAL)
+set_target_properties(watcher PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/watcher/include
+)
diff --git a/Externals/watcher/watcher b/Externals/watcher/watcher
new file mode 160000
index 0000000000..b03bdcfc11
--- /dev/null
+++ b/Externals/watcher/watcher
@@ -0,0 +1 @@
+Subproject commit b03bdcfc11549df595b77239cefe2643943a3e2f
diff --git a/Source/VSProps/Base.Dolphin.props b/Source/VSProps/Base.Dolphin.props
index f2f213b009..ce65bf1911 100644
--- a/Source/VSProps/Base.Dolphin.props
+++ b/Source/VSProps/Base.Dolphin.props
@@ -17,6 +17,7 @@
$(ExternalsDir)rangeset\include;%(AdditionalIncludeDirectories)
$(ExternalsDir)Vulkan-Headers\include;%(AdditionalIncludeDirectories)
$(ExternalsDir)VulkanMemoryAllocator\include;%(AdditionalIncludeDirectories)
+ $(ExternalsDir)watcher\watcher\include;%(AdditionalIncludeDirectories)
$(ExternalsDir)WIL\include;%(AdditionalIncludeDirectories)
WIL_SUPPRESS_EXCEPTIONS;%(PreprocessorDefinitions)