diff --git a/.gitignore b/.gitignore
index d2c71f2214..0a1e43a331 100644
--- a/.gitignore
+++ b/.gitignore
@@ -124,3 +124,5 @@ i18n_status.csv
 # Don't actually ignore any of these files, since we need them in the tree
 !resources/linux/icons/hicolor/**/**/*
 !CMakeModules/**/*
+# Junk temp files generated by MSVC for resource files
+/resources/msw/RC*
diff --git a/CMakeModules/MinGWResourceCompiler.cmake b/CMakeModules/MinGWResourceCompiler.cmake
index 14e7197e42..5007f94409 100644
--- a/CMakeModules/MinGWResourceCompiler.cmake
+++ b/CMakeModules/MinGWResourceCompiler.cmake
@@ -12,7 +12,7 @@ macro(mingw_resource_compiler _NAME)
     dbg_msg("CMAKE_RC_COMPILER: ${CMAKE_RC_COMPILER}")
 
     # Input file.
-    set(_IN "${CMAKE_CURRENT_SOURCE_DIR}/${_NAME}.rc")
+    set(_IN "${CMAKE_SOURCE_DIR}/resources/msw/${_NAME}.rc")
     dbg_msg("_IN: ${_IN}")
 
     # Output file.
diff --git a/bitmap2component/CMakeLists.txt b/bitmap2component/CMakeLists.txt
index aba04a75b7..5fa78f492c 100644
--- a/bitmap2component/CMakeLists.txt
+++ b/bitmap2component/CMakeLists.txt
@@ -30,7 +30,7 @@ if( MINGW )
     # BITMAP2COMPONENT_RESOURCES variable is set by the macro.
     mingw_resource_compiler( bitmap2component )
 else()
-    set( BITMAP2COMPONENT_RESOURCES bitmap2component.rc )
+    set( BITMAP2COMPONENT_RESOURCES ${CMAKE_SOURCE_DIR}/resources/msw/bitmap2component.rc )
 endif()
 
 if( APPLE )
diff --git a/cvpcb/CMakeLists.txt b/cvpcb/CMakeLists.txt
index 3eda75fd6b..43d1f2c555 100644
--- a/cvpcb/CMakeLists.txt
+++ b/cvpcb/CMakeLists.txt
@@ -49,7 +49,7 @@ if( MINGW )
     # CVPCB_RESOURCES variable is set by the macro.
     mingw_resource_compiler( cvpcb )
 else()
-    set( CVPCB_RESOURCES cvpcb.rc )
+    set( CVPCB_RESOURCES ${CMAKE_SOURCE_DIR}/resources/msw/cvpcb.rc )
 endif()
 
 
diff --git a/eeschema/CMakeLists.txt b/eeschema/CMakeLists.txt
index b74a542959..e0cc32e364 100644
--- a/eeschema/CMakeLists.txt
+++ b/eeschema/CMakeLists.txt
@@ -309,7 +309,7 @@ if( MINGW )
     # EESCHEMA_RESOURCES variable is set by the macro.
     mingw_resource_compiler( eeschema )
 else()
-    set( EESCHEMA_RESOURCES eeschema.rc )
+    set( EESCHEMA_RESOURCES ${CMAKE_SOURCE_DIR}/resources/msw/eeschema.rc )
 endif()
 
 # Create a C++ compilable string initializer containing markdown text into a *.h file:
diff --git a/gerbview/CMakeLists.txt b/gerbview/CMakeLists.txt
index 72529eb4ac..c653a856ee 100644
--- a/gerbview/CMakeLists.txt
+++ b/gerbview/CMakeLists.txt
@@ -83,7 +83,7 @@ if( MINGW )
     # GERBVIEW_RESOURCES variable is set by the macro.
     mingw_resource_compiler( gerbview )
 else()
-    set( GERBVIEW_RESOURCES gerbview.rc )
+    set( GERBVIEW_RESOURCES ${CMAKE_SOURCE_DIR}/resources/msw/gerbview.rc )
 endif()
 
 if( APPLE )
diff --git a/kicad/CMakeLists.txt b/kicad/CMakeLists.txt
index e3263ce4b8..61069e6de8 100644
--- a/kicad/CMakeLists.txt
+++ b/kicad/CMakeLists.txt
@@ -37,7 +37,7 @@ if( MINGW )
     # KICAD_RESOURCES variable is set by the macro.
     mingw_resource_compiler( kicad )
 else()
-    set( KICAD_RESOURCES kicad.rc )
+    set( KICAD_RESOURCES ${CMAKE_SOURCE_DIR}/resources/msw/kicad.rc )
 endif()
 
 if( APPLE )
diff --git a/pagelayout_editor/CMakeLists.txt b/pagelayout_editor/CMakeLists.txt
index b5ddbbf627..af18c0b469 100644
--- a/pagelayout_editor/CMakeLists.txt
+++ b/pagelayout_editor/CMakeLists.txt
@@ -56,7 +56,7 @@ if( MINGW )
     # PL_EDITOR_RESOURCES variable is set by the macro.
     mingw_resource_compiler( pl_editor )
 else()
-    set( PL_EDITOR_RESOURCES pl_editor.rc )
+    set( PL_EDITOR_RESOURCES ${CMAKE_SOURCE_DIR}/resources/msw/pl_editor.rc )
 endif()
 
 
diff --git a/pcb_calculator/CMakeLists.txt b/pcb_calculator/CMakeLists.txt
index 922a32f1c2..264ed1b7e0 100644
--- a/pcb_calculator/CMakeLists.txt
+++ b/pcb_calculator/CMakeLists.txt
@@ -41,7 +41,7 @@ if( MINGW )
     # PCB_CALCULATOR_RESOURCES variable is set by the macro.
     mingw_resource_compiler( pcb_calculator )
 else()
-    set( PCB_CALCULATOR_RESOURCES pcb_calculator.rc )
+    set( PCB_CALCULATOR_RESOURCES ${CMAKE_SOURCE_DIR}/resources/msw/pcb_calculator.rc )
 endif()
 
 if( APPLE )
diff --git a/pcbnew/CMakeLists.txt b/pcbnew/CMakeLists.txt
index 24bb8f7afe..89d2e34930 100644
--- a/pcbnew/CMakeLists.txt
+++ b/pcbnew/CMakeLists.txt
@@ -570,7 +570,7 @@ if( MINGW )
     # PCBNEW_RESOURCES variable is set by the macro.
     mingw_resource_compiler( pcbnew )
 else()
-    set( PCBNEW_RESOURCES pcbnew.rc )
+    set( PCBNEW_RESOURCES ${CMAKE_SOURCE_DIR}/resources/msw/pcbnew.rc )
 endif()
 
 
diff --git a/bitmap2component/bitmap2component.rc b/resources/msw/bitmap2component.rc
similarity index 100%
rename from bitmap2component/bitmap2component.rc
rename to resources/msw/bitmap2component.rc
diff --git a/cvpcb/cvpcb.rc b/resources/msw/cvpcb.rc
similarity index 100%
rename from cvpcb/cvpcb.rc
rename to resources/msw/cvpcb.rc
diff --git a/eeschema/eeschema.rc b/resources/msw/eeschema.rc
similarity index 100%
rename from eeschema/eeschema.rc
rename to resources/msw/eeschema.rc
diff --git a/gerbview/gerbview.rc b/resources/msw/gerbview.rc
similarity index 100%
rename from gerbview/gerbview.rc
rename to resources/msw/gerbview.rc
diff --git a/kicad/kicad.rc b/resources/msw/kicad.rc
similarity index 100%
rename from kicad/kicad.rc
rename to resources/msw/kicad.rc
diff --git a/pcb_calculator/pcb_calculator.rc b/resources/msw/pcb_calculator.rc
similarity index 100%
rename from pcb_calculator/pcb_calculator.rc
rename to resources/msw/pcb_calculator.rc
diff --git a/pcbnew/pcbnew.rc b/resources/msw/pcbnew.rc
similarity index 100%
rename from pcbnew/pcbnew.rc
rename to resources/msw/pcbnew.rc
diff --git a/pagelayout_editor/pl_editor.rc b/resources/msw/pl_editor.rc
similarity index 100%
rename from pagelayout_editor/pl_editor.rc
rename to resources/msw/pl_editor.rc