# Convert project files between Visual Studio 2010 and # Visual C++ 2020 Express (use Python 2.6 or later). # # Copyright 2010, Dr B R Gladman from __future__ import print_function import os import shutil import string import fileinput, sys express = False mkr = r''' ''' + '\n' pg1 = r''' ''' '\n' pg2 = r''' ''' '\n' pgc = r''' Application''' '\n' pgt = r''' Windows7.1SDK''' '\n' pgf = r''' ''' '\n' def find_lines(l): i = i0 = i1 = i2 = 0 while i < len(l): if l[i].strip() == mkr.strip(): i0 = i + 1 if (l[i].strip() == pg1.strip() and l[i + 1].strip() == pgc.strip() and l[i + 2].strip() == pgt.strip() and l[i + 3].strip() == pgf.strip()): i1 = i if (l[i].strip() == pg2.strip() and l[i + 1].strip() == pgc.strip() and l[i + 2].strip() == pgt.strip() and l[i + 3].strip() == pgf.strip()): i2 = i i = i + 1 return (i0, i1, i2) def add_it(fn): with open(fn, 'r') as f: l = f.readlines() t = find_lines(l) if t[0] and not t[1] and not t[2]: print("Adding Express: ", fn) l[t[0] : t[0]] = [pg1, pgc, pgt, pgf, pg2, pgc, pgt, pgf] with open(fn, 'w') as f: f.writelines(l) def remove_it(fn): with open(fn, 'r') as f: l = f.readlines() t = find_lines(l) if t[1] and t[2]: print("Removing Express: ", fn) l[t[2] : t[2] + 4] = [] l[t[1] : t[1] + 4] = [] with open(fn, 'w') as f: f.writelines(l) if not os.getcwd().endswith("build.vc10"): print("This script must be run in the 'build.vc10' directory") else: for root, dirs, files in os.walk("./") : for file in files : if not (root.endswith("_p0") or root.endswith("_p3") or root.endswith("_p4")): if file.endswith(".vcxproj") : t = os.path.join(root, file) add_it(t) if express else remove_it(t)