|
|
|
@ -80,8 +80,7 @@ namespace CppSharp |
|
|
|
VisualStudioVersion.Latest) |
|
|
|
VisualStudioVersion.Latest) |
|
|
|
{ |
|
|
|
{ |
|
|
|
Console.WriteLine("\nInclude search path (VS: {0}):", vsVersion); |
|
|
|
Console.WriteLine("\nInclude search path (VS: {0}):", vsVersion); |
|
|
|
VisualStudioVersion foundVsVersion; |
|
|
|
foreach (var include in GetSystemIncludes(vsVersion)) |
|
|
|
foreach (var include in GetSystemIncludes(vsVersion, out foundVsVersion)) |
|
|
|
|
|
|
|
Console.WriteLine($"\t{include}"); |
|
|
|
Console.WriteLine($"\t{include}"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -162,49 +161,41 @@ namespace CppSharp |
|
|
|
return windowsKitSdk; |
|
|
|
return windowsKitSdk; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary>Gets the system include folders for the given Visual Studio version.</summary>
|
|
|
|
public static VisualStudioVersion FindVSVersion(VisualStudioVersion vsVersion) |
|
|
|
/// <param name="wantedVsVersion">The version of Visual Studio to get
|
|
|
|
|
|
|
|
/// system includes from.</param>
|
|
|
|
|
|
|
|
/// <param name="foundVsVersion">The found version of Visual Studio
|
|
|
|
|
|
|
|
/// system includes are actually got from.</param>
|
|
|
|
|
|
|
|
public static List<string> GetSystemIncludes(VisualStudioVersion wantedVsVersion, |
|
|
|
|
|
|
|
out VisualStudioVersion foundVsVersion) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var vsSdk = GetVisualStudioSdk(wantedVsVersion, out foundVsVersion); |
|
|
|
|
|
|
|
var vsDir = vsSdk.Directory; |
|
|
|
|
|
|
|
if (Path.GetFileName(vsDir) == "IDE") |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
string secondToLastDirPath = Path.GetDirectoryName(vsDir); |
|
|
|
|
|
|
|
if (Path.GetFileName(secondToLastDirPath) == "Common7") |
|
|
|
|
|
|
|
vsDir = Path.GetDirectoryName(secondToLastDirPath); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return GetSystemIncludes(foundVsVersion, vsDir); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static ToolchainVersion GetVisualStudioSdk( |
|
|
|
|
|
|
|
VisualStudioVersion wantedVsVersion, out VisualStudioVersion foundVsVersion) |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
if (wantedVsVersion != VisualStudioVersion.Latest) |
|
|
|
if (vsVersion != VisualStudioVersion.Latest) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var vsSdk = GetVSToolchain(wantedVsVersion); |
|
|
|
var vsSdk = GetVSToolchain(vsVersion); |
|
|
|
if (vsSdk.IsValid) |
|
|
|
if (vsSdk.IsValid) |
|
|
|
{ |
|
|
|
return vsVersion; |
|
|
|
foundVsVersion = wantedVsVersion; |
|
|
|
|
|
|
|
return vsSdk; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// we don't know what "latest" is on a given machine
|
|
|
|
// we don't know what "latest" is on a given machine
|
|
|
|
// so start from the latest specified version and loop until a match is found
|
|
|
|
// so start from the latest specified version and loop until a match is found
|
|
|
|
for (var i = VisualStudioVersion.Latest - 1; i >= VisualStudioVersion.VS2012; i--) |
|
|
|
for (var i = VisualStudioVersion.Latest - 1; i >= VisualStudioVersion.VS2012; i--) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var vsSdk = GetVisualStudioSdk(i, out foundVsVersion); |
|
|
|
vsVersion = FindVSVersion(i); |
|
|
|
if (vsSdk.IsValid) |
|
|
|
if (vsVersion != VisualStudioVersion.Latest) |
|
|
|
return vsSdk; |
|
|
|
return vsVersion; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
foundVsVersion = VisualStudioVersion.Latest; |
|
|
|
return VisualStudioVersion.Latest; |
|
|
|
return new ToolchainVersion(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>Gets the system include folders for the given Visual Studio version.</summary>
|
|
|
|
|
|
|
|
/// <param name="vsVersion">The version of Visual Studio to get
|
|
|
|
|
|
|
|
/// system includes from.</param>
|
|
|
|
|
|
|
|
public static List<string> GetSystemIncludes(VisualStudioVersion vsVersion) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
var vsSdk = GetVSToolchain(vsVersion); |
|
|
|
|
|
|
|
var vsDir = vsSdk.Directory; |
|
|
|
|
|
|
|
if (Path.GetFileName(vsDir) == "IDE") |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
string secondToLastDirPath = Path.GetDirectoryName(vsDir); |
|
|
|
|
|
|
|
if (Path.GetFileName(secondToLastDirPath) == "Common7") |
|
|
|
|
|
|
|
vsDir = Path.GetDirectoryName(secondToLastDirPath); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return GetSystemIncludes(vsVersion, vsDir); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static void DumpSdks(string sku, IEnumerable<ToolchainVersion> sdks) |
|
|
|
private static void DumpSdks(string sku, IEnumerable<ToolchainVersion> sdks) |
|
|
|
|