diff --git a/compat/msvc/winmake.py b/compat/msvc/winmake.py
index 60023d1d054aeae21ca706bcc8c8b1ac17897ebf..06b166b21c93e147cfdab1f32a3fcaa0bc811102 100644
--- a/compat/msvc/winmake.py
+++ b/compat/msvc/winmake.py
@@ -41,6 +41,7 @@ import logging
 import traceback
 import re
 import fileinput
+import hashlib
 
 root_logger = logging.getLogger(__name__)
 log = None
@@ -75,6 +76,15 @@ vs_where_path = os.path.join(
 host_is_64bit = (False, True)[platform.machine().endswith('64')]
 python_is_64bit = (False, True)[8 * struct.calcsize("P") == 64]
 
+def getMd5ForDirectory(path):
+    hasher = hashlib.md5()
+    for root, _, files in os.walk(path, topdown=True):
+        for name in files:
+            fileName = (os.path.join(root, name))
+            with open(str(fileName), 'rb') as aFile:
+                buf = aFile.read()
+                hasher.update(buf)
+    return hasher.hexdigest()
 
 def shellquote(s, windows=False):
     if not windows:
@@ -238,6 +248,7 @@ def make(pkg_info, force, sdk_version, toolset, isPlugin):
         return make_daemon(pkg_info, force, sdk_version, toolset)
     if isPlugin:
         return make_plugin(pkg_info, force, sdk_version, toolset)
+    md5 = getMd5ForDirectory(contrib_src_dir + r'\\' + pkg_name)
     version = pkg_info.get('version')
     pkg_build_uptodate = False
     pkg_ver_uptodate = False
@@ -252,7 +263,7 @@ def make(pkg_info, force, sdk_version, toolset, isPlugin):
             pkg_build_uptodate = is_build_uptodate(pkg_name, build_file)
             with open(build_file, 'r+', encoding="utf8", errors='ignore') as f:
                 current_version = f.read()
-                if current_version == version:
+                if current_version == md5:
                     pkg_ver_uptodate = True
     for dep in pkg_info.get('deps', []):
         dep_build_dep = resolve(dep, False, sdk_version, toolset)
@@ -303,7 +314,7 @@ def make(pkg_info, force, sdk_version, toolset, isPlugin):
                  sdk_to_use,
                  toolset,
                  use_cmake=use_cmake):
-            track_build(pkg_name, version, isPlugin)
+            track_build(pkg_name, md5, False)
         else:
             log.error("Couldn't build contrib " + pkg_name)
             exit(1)