67 lines
2.2 KiB
Python
67 lines
2.2 KiB
Python
|
|
# 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''' <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />''' + '\n'
|
|
pg1 = r''' <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">''' '\n'
|
|
pg2 = r''' <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">''' '\n'
|
|
pgc = r''' <ConfigurationType>Application</ConfigurationType>''' '\n'
|
|
pgt = r''' <PlatformToolset>Windows7.1SDK</PlatformToolset>''' '\n'
|
|
pgf = r''' </PropertyGroup>''' '\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)
|