parent
08871206fb
commit
e1dc3b3a93
1 changed files with 0 additions and 150 deletions
@ -1,150 +0,0 @@ |
||||
#!/usr/bin/env python3 |
||||
|
||||
|
||||
# Copyright 2012-2013 Jussi Pakkanen |
||||
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); |
||||
# you may not use this file except in compliance with the License. |
||||
# You may obtain a copy of the License at |
||||
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 |
||||
|
||||
# Unless required by applicable law or agreed to in writing, software |
||||
# distributed under the License is distributed on an "AS IS" BASIS, |
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
# See the License for the specific language governing permissions and |
||||
# limitations under the License. |
||||
|
||||
import xml.etree.ElementTree as ET |
||||
import xml.dom.minidom |
||||
|
||||
def gen_vcxproj(ofname): |
||||
buildtype = 'Debug' |
||||
platform = "Win32" |
||||
project_name = 'prog' |
||||
target_name = 'prog' |
||||
subsystem = 'console' |
||||
project_file_version = '10.0.30319.1' |
||||
guid = '{4A8C542D-A4C3-AC4A-A85A-E2A893CCB716}' |
||||
root = ET.Element('Project', {'DefaultTargets' : "Build", |
||||
'ToolsVersion' : '4.0', |
||||
'xmlns' : 'http://schemas.microsoft.com/developer/msbuild/2003'}) |
||||
confitems = ET.SubElement(root, 'ItemGroup', {'Label' : 'ProjectConfigurations'}) |
||||
prjconf = ET.SubElement(confitems, 'ProjectConfiguration', {'Include' : 'Debug|Win32'}) |
||||
p = ET.SubElement(prjconf, 'Configuration') |
||||
p.text= buildtype |
||||
pl = ET.SubElement(prjconf, 'Platform') |
||||
pl.text = platform |
||||
globalgroup = ET.SubElement(root, 'PropertyGroup', Label='Globals') |
||||
guidelem = ET.SubElement(globalgroup, 'ProjectGUID') |
||||
guidelem.text = guid |
||||
kw = ET.SubElement(globalgroup, 'Keyword') |
||||
kw.text = 'Win32Proj' |
||||
ns = ET.SubElement(globalgroup, 'RootNamespace') |
||||
ns.text = 'Sample' |
||||
p = ET.SubElement(globalgroup, 'Platform') |
||||
p.text= platform |
||||
pname= ET.SubElement(globalgroup, 'ProjectName') |
||||
pname.text = project_name |
||||
ET.SubElement(root, 'Import', Project='$(VCTargetsPath)\Microsoft.Cpp.Default.props') |
||||
type_config = ET.SubElement(root, 'PropertyGroup', Label='Configuration') |
||||
ET.SubElement(type_config, 'ConfigurationType').text = 'Application' |
||||
ET.SubElement(type_config, 'CharacterSet').text = 'MultiByte' |
||||
ET.SubElement(type_config, 'WholeProgramOptimization').text = 'false' |
||||
ET.SubElement(type_config, 'UseDebugLibraries').text = 'false' |
||||
ET.SubElement(root, 'Import', Project='$(VCTargetsPath)\Microsoft.Cpp.props') |
||||
direlem = ET.SubElement(root, 'PropertyGroup') |
||||
fver = ET.SubElement(direlem, '_ProjectFileVersion') |
||||
fver.text = project_file_version |
||||
outdir = ET.SubElement(direlem, 'OutDir') |
||||
outdir.text = '.\\' |
||||
intdir = ET.SubElement(direlem, 'IntDir') |
||||
intdir.text = 'obj\\' |
||||
tname = ET.SubElement(direlem, 'TargetName') |
||||
tname.text = target_name |
||||
inclinc = ET.SubElement(direlem, 'LinkIncremental') |
||||
inclinc.text = 'true' |
||||
|
||||
compiles = ET.SubElement(root, 'ItemDefinitionGroup') |
||||
clconf = ET.SubElement(compiles, 'ClCompile') |
||||
opt = ET.SubElement(clconf, 'Optimization') |
||||
opt.text = 'disabled' |
||||
preproc = ET.SubElement(clconf, 'PreprocessorDefinitions') |
||||
rebuild = ET.SubElement(clconf, 'MinimalRebuild') |
||||
rebuild.text = 'true' |
||||
rtlib = ET.SubElement(clconf, 'RuntimeLibrary') |
||||
rtlib.text = 'MultiThreadedDebugDLL' |
||||
funclink = ET.SubElement(clconf, 'FunctionLevelLinking') |
||||
funclink.text = 'true' |
||||
pch = ET.SubElement(clconf, 'PrecompiledHeader') |
||||
warnings = ET.SubElement(clconf, 'WarningLevel') |
||||
warnings.text = 'Level3' |
||||
debinfo = ET.SubElement(clconf, 'DebugInformationFormat') |
||||
debinfo.text = 'EditAndContinue' |
||||
resourcecompile = ET.SubElement(compiles, 'ResourceCompile') |
||||
respreproc = ET.SubElement(resourcecompile, 'PreprocessorDefinitions') |
||||
link = ET.SubElement(compiles, 'Link') |
||||
ofile = ET.SubElement(link, 'OutputFile') |
||||
ofile.text = '$(OutDir)prog.exe' |
||||
addlibdir = ET.SubElement(link, 'AdditionalLibraryDirectories') |
||||
addlibdir.text = '%(AdditionalLibraryDirectories)' |
||||
subsys = ET.SubElement(link, 'SubSystem') |
||||
subsys.text = subsystem |
||||
gendeb = ET.SubElement(link, 'GenerateDebugInformation') |
||||
gendeb.text = 'true' |
||||
pdb = ET.SubElement(link, 'ProgramDataBaseFileName') |
||||
pdb.text = '$(OutDir}prog.pdb' |
||||
entrypoint = ET.SubElement(link, 'EntryPointSymbol') |
||||
entrypoint.text = 'mainCRTStartup' |
||||
targetmachine = ET.SubElement(link, 'TargetMachine') |
||||
targetmachine.text = 'MachineX86' |
||||
|
||||
inc_files = ET.SubElement(root, 'ItemGroup') |
||||
ET.SubElement(inc_files, 'CLInclude', Include='prog.h') |
||||
inc_src = ET.SubElement(root, 'ItemGroup') |
||||
ET.SubElement(inc_src, 'ClCompile', Include='prog.cpp') |
||||
ET.SubElement(root, 'Import', Project='$(VCTargetsPath)\Microsoft.Cpp.targets') |
||||
tree = ET.ElementTree(root) |
||||
tree.write(ofname, encoding='utf-8', xml_declaration=True) |
||||
# ElementTree can not do prettyprinting so do it manually |
||||
doc = xml.dom.minidom.parse(ofname) |
||||
open(ofname, 'w').write(doc.toprettyxml()) |
||||
|
||||
def gen_solution(ofname): |
||||
solution_guid = '{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}' |
||||
proj_guid = '{4A8C542D-A4C3-AC4A-A85A-E2A893CCB716}' |
||||
target_name = 'Sample' |
||||
target_vcxproj = 'sample.vcxproj' |
||||
ofile = open(ofname, 'w') |
||||
ofile.write('Microsoft Visual Studio Solution File, Format Version 11.00\n') |
||||
ofile.write('# Visual Studio 2010\n') |
||||
prj_line = 'Project("%s") = "%s", "%s", "%s"\n' % (solution_guid, target_name, |
||||
target_vcxproj, proj_guid) |
||||
ofile.write(prj_line) |
||||
ofile.write('EndProject') |
||||
ofile.write('Global') |
||||
indent = '\t' # I shudder |
||||
ofile.write('%sGlobalSection(SolutionConfigurationPlatforms) = preSolution\n' % indent) |
||||
indent = '\t\t' |
||||
ofile.write('%sDebug|Win32 = Debug|Win32\n' % indent) |
||||
indent = '\t' |
||||
ofile.write(indent + 'EndGlobalSection\n') |
||||
ofile.write(indent + 'GlobalSection(ProjectConfigurationPlatforms) = postSolution\n') |
||||
indent = '\t\t' |
||||
ofile.write(indent + proj_guid + '.Debug|Win32.ActiveCfg = Debug|Win32\n') |
||||
ofile.write(indent + proj_guid + '.Debug|Win32.Build.0 = Debug|Win32\n') |
||||
indent = '\t' |
||||
ofile.write(indent + 'EndGlobalSection\n') |
||||
ofile.write(indent + 'GlobalSection(SolutionProperties) = preSolution\n') |
||||
indent = '\t\t' |
||||
ofile.write(indent + 'HideSolutionNode = FALSE\n') |
||||
indent = '\t' |
||||
ofile.write(indent + 'EndGlobalSection') |
||||
ofile.write('EndGlobal\n') |
||||
|
||||
def runtest(base): |
||||
gen_vcxproj(base + '.vcxproj') |
||||
gen_solution(base + '.sln') |
||||
|
||||
if __name__ == '__main__': |
||||
runtest('sample') |
Loading…
Reference in new issue