vccexe tool can use vccdiscover utility
Used when vcvarsall path is not specified, or if only a vccversion is specified
This commit is contained in:
parent
aa14ee1856
commit
05faad30a4
1 changed files with 22 additions and 2 deletions
|
|
@ -1,4 +1,4 @@
|
||||||
import strutils, strtabs, os, osproc, vcvarsall
|
import strutils, strtabs, os, osproc, vcvarsall, vccdiscover
|
||||||
|
|
||||||
when defined(release):
|
when defined(release):
|
||||||
let vccOptions = {poParentStreams}
|
let vccOptions = {poParentStreams}
|
||||||
|
|
@ -6,12 +6,14 @@ else:
|
||||||
let vccOptions = {poEchoCmd, poParentStreams}
|
let vccOptions = {poEchoCmd, poParentStreams}
|
||||||
|
|
||||||
const
|
const
|
||||||
|
vccversionPrefix = "--vccversion"
|
||||||
vcvarsallPrefix = "--vcvarsall"
|
vcvarsallPrefix = "--vcvarsall"
|
||||||
commandPrefix = "--command"
|
commandPrefix = "--command"
|
||||||
platformPrefix = "--platform"
|
platformPrefix = "--platform"
|
||||||
sdktypePrefix = "--sdktype"
|
sdktypePrefix = "--sdktype"
|
||||||
sdkversionPrefix = "--sdkversion"
|
sdkversionPrefix = "--sdkversion"
|
||||||
|
|
||||||
|
vccversionSepIdx = vccversionPrefix.len
|
||||||
vcvarsallSepIdx = vcvarsallPrefix.len
|
vcvarsallSepIdx = vcvarsallPrefix.len
|
||||||
commandSepIdx = commandPrefix.len
|
commandSepIdx = commandPrefix.len
|
||||||
platformSepIdx = platformPrefix.len
|
platformSepIdx = platformPrefix.len
|
||||||
|
|
@ -27,6 +29,9 @@ const
|
||||||
Usage:
|
Usage:
|
||||||
vccexe [options] [compileroptions]
|
vccexe [options] [compileroptions]
|
||||||
Options:
|
Options:
|
||||||
|
--vccversion:<v> Optionally specify the VCC version to discover
|
||||||
|
<v>: 0, 90, 100, 110, 120, 140
|
||||||
|
Argument value is passed on to vccdiscover utility
|
||||||
--vcvarsall:<path> Path to the Developer Command Prompt utility vcvarsall.bat that selects
|
--vcvarsall:<path> Path to the Developer Command Prompt utility vcvarsall.bat that selects
|
||||||
the appropiate devlopment settings.
|
the appropiate devlopment settings.
|
||||||
Usual path for Visual Studio 2015 and below:
|
Usual path for Visual Studio 2015 and below:
|
||||||
|
|
@ -54,6 +59,7 @@ command was specified
|
||||||
"""
|
"""
|
||||||
|
|
||||||
when isMainModule:
|
when isMainModule:
|
||||||
|
var vccversionArg: seq[string] = @[]
|
||||||
var vcvarsallArg: string = nil
|
var vcvarsallArg: string = nil
|
||||||
var commandArg: string = nil
|
var commandArg: string = nil
|
||||||
var platformArg: VccArch
|
var platformArg: VccArch
|
||||||
|
|
@ -65,7 +71,9 @@ when isMainModule:
|
||||||
var wrapperArgs = commandLineParams()
|
var wrapperArgs = commandLineParams()
|
||||||
for wargv in wrapperArgs:
|
for wargv in wrapperArgs:
|
||||||
# Check whether the current argument contains -- prefix
|
# Check whether the current argument contains -- prefix
|
||||||
if wargv.startsWith(vcvarsallPrefix): # Check for vcvarsall
|
if wargv.startsWith(vccversionPrefix): # Check for vccversion
|
||||||
|
vccversionArg.add(wargv.substr(vccversionSepIdx + 1))
|
||||||
|
elif wargv.startsWith(vcvarsallPrefix): # Check for vcvarsall
|
||||||
vcvarsallArg = wargv.substr(vcvarsallSepIdx + 1)
|
vcvarsallArg = wargv.substr(vcvarsallSepIdx + 1)
|
||||||
elif wargv.startsWith(commandPrefix): # Check for command
|
elif wargv.startsWith(commandPrefix): # Check for command
|
||||||
commandArg = wargv.substr(commandSepIdx + 1)
|
commandArg = wargv.substr(commandSepIdx + 1)
|
||||||
|
|
@ -80,6 +88,18 @@ when isMainModule:
|
||||||
echo HelpText
|
echo HelpText
|
||||||
clArgs.add(wargv)
|
clArgs.add(wargv)
|
||||||
|
|
||||||
|
for vccversionItem in vccversionArg:
|
||||||
|
var vccversionValue: VccVersion
|
||||||
|
try:
|
||||||
|
vccversionValue = cast[VccVersion](parseInt(vccversionItem))
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
vcvarsallArg = discoverVccVcVarsAllPath(vccversionValue)
|
||||||
|
if vcvarsallArg.len > 0:
|
||||||
|
break
|
||||||
|
if vcvarsallArg.len < 1 and vccversionArg.len < 1:
|
||||||
|
vcvarsallArg = discoverVccVcVarsAllPath()
|
||||||
|
|
||||||
var vcvars = vccVarsAll(vcvarsallArg, platformArg, sdkTypeArg, sdkVersionArg)
|
var vcvars = vccVarsAll(vcvarsallArg, platformArg, sdkTypeArg, sdkVersionArg)
|
||||||
if vcvars != nil:
|
if vcvars != nil:
|
||||||
for vccEnvKey, vccEnvVal in vcvars:
|
for vccEnvKey, vccEnvVal in vcvars:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue