projectname="someapp_vc7w2k" outputdirectory="..\\..\\..\\..\\output\\someapp\\bin\\vc7w2k" intermediatedirectory="..\\..\\..\\..\\intermediate\\someapp\\build\\vc7w2k\\debug" additionalincludedirectories="..\\..\\.." precompiledheaderthrough="someapp/code/cl.hpp" precompiledheaderfile="..\\..\\code\\cl.cpp" additionaldependencies="vfw32.lib opengl32.lib" additionallibrarydirectories="..\\..\\..\\..\\output\\something\\lib\\vc7w2k;..\\..\\..\\..\\output\\somethingother\\lib\\vc7w2k;..\\..\\..\\..\\output\\somethingelse\\lib\\vc7w2k;..\\..\\..\\..\\output\\somethingw2k\\lib\\vc7w2k" import glob hpp_files=glob.glob("..\\..\\code\\*.hpp") cpp_files=glob.glob("..\\..\\code\\*.cpp") dependencies= [ ["somethingother_vc7w2k","..\\..\\..\\somethingother\\build\\vc7w2k\\",""], ["somethingelse_vc7w2k", "..\\..\\..\\somethingelse\\build\\vc7w2k\\", ""], ["somethingw2k_vc7w2k", "..\\..\\..\\somethingw2k\\build\\vc7w2k\\", ""], ["something_vc7w2k", "..\\..\\..\\something\\build\\vc7w2k\\", ""], ] ####################################################################### import os import random def genguid(): return ("%08X-%04X-%04X-%04X-%012X"%(random.randint(0,8**8),random.randint(0,4**8),random.randint(0,4**8),random.randint(0,4**8),random.randint(0,12**8))) def rm(fname): if os.access(fname,os.F_OK): os.remove(fname) # remove any existing files rm(projectname+".vcproj") rm(projectname+".sln") rm(projectname+".ncb") rm(projectname+".suo") # check if a guid file already exists, if not, write one if not os.access(projectname+'.vcproj_guid',os.F_OK): f=file(projectname+'.vcproj_guid','w') f.write(genguid()) f.close() # read in guid file f=file(projectname+'.vcproj_guid','r') projectguid=f.read() f.close() #read in the guids for the dependencies for i,v in enumerate(dependencies): f=file(v[1]+v[0]+'.vcproj_guid','r') v[2]=f.read() f.close() #create the vcproj f=file(projectname+'.vcproj','w') f.write ('\n') f.write ('\n') f.write (' \n') f.write (' \n') f.write (' \n') f.write (' \n') f.write (' \n') f.write (' \n') f.write (' \n') f.write (' \n') f.write (' \n') f.write (' \n') f.write (' \n') for i,v in enumerate(cpp_files): f.write (' \n') if v==precompiledheaderfile: f.write (' \n') f.write (' \n') f.write (' \n') f.write (' \n') f.write (' \n') f.write (' \n') for i,v in enumerate(hpp_files): f.write (' \n') f.write (' \n') f.write (' \n') f.write (' \n') f.write ('\n') f.close() #create the sln f=file(projectname+'.sln','w') f.write ('Microsoft Visual Studio Solution File, Format Version 8.00\n') f.write ('Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "'+projectname+'", "'+projectname+'.vcproj", "{'+projectguid+'}"\n') f.write (' ProjectSection(ProjectDependencies) = postProject\n') for i,v in enumerate(dependencies): f.write (' {'+v[2]+'} = {'+v[2]+'}\n') f.write (' EndProjectSection\n') f.write ('EndProject\n') for i,v in enumerate(dependencies): f.write ('Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "'+v[0]+'", "'+v[1]+v[0]+".vcproj"+'", "{'+v[2]+'}"\n') f.write (' ProjectSection(ProjectDependencies) = postProject\n') f.write (' EndProjectSection\n') f.write ('EndProject\n') f.write ('Global\n') f.write (' GlobalSection(SolutionConfiguration) = preSolution\n') f.write (' Debug = Debug\n') f.write (' EndGlobalSection\n') f.write (' GlobalSection(ProjectConfiguration) = postSolution\n') f.write (' {'+projectguid+'}.Debug.ActiveCfg = Debug|Win32\n') f.write (' {'+projectguid+'}.Debug.Build.0 = Debug|Win32\n') for i,v in enumerate(dependencies): f.write (' {'+v[2]+'}.Debug.ActiveCfg = Debug|Win32\n') f.write (' {'+v[2]+'}.Debug.Build.0 = Debug|Win32\n') f.write (' EndGlobalSection\n') f.write (' GlobalSection(ExtensibilityGlobals) = postSolution\n') f.write (' EndGlobalSection\n') f.write (' GlobalSection(ExtensibilityAddIns) = postSolution\n') f.write (' EndGlobalSection\n') f.write ('EndGlobal\n') f.close()