diff --git a/src/Core/Toolchains/MSVCToolchain.cs b/src/Core/Toolchains/MSVCToolchain.cs
index 271e0aba..2ed75d36 100644
--- a/src/Core/Toolchains/MSVCToolchain.cs
+++ b/src/Core/Toolchains/MSVCToolchain.cs
@@ -80,8 +80,7 @@ namespace CppSharp
VisualStudioVersion.Latest)
{
Console.WriteLine("\nInclude search path (VS: {0}):", vsVersion);
- VisualStudioVersion foundVsVersion;
- foreach (var include in GetSystemIncludes(vsVersion, out foundVsVersion))
+ foreach (var include in GetSystemIncludes(vsVersion))
Console.WriteLine($"\t{include}");
}
@@ -162,49 +161,41 @@ namespace CppSharp
return windowsKitSdk;
}
- /// Gets the system include folders for the given Visual Studio version.
- /// The version of Visual Studio to get
- /// system includes from.
- /// The found version of Visual Studio
- /// system includes are actually got from.
- public static List 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)
+ public static VisualStudioVersion FindVSVersion(VisualStudioVersion vsVersion)
{
- if (wantedVsVersion != VisualStudioVersion.Latest)
+ if (vsVersion != VisualStudioVersion.Latest)
{
- var vsSdk = GetVSToolchain(wantedVsVersion);
+ var vsSdk = GetVSToolchain(vsVersion);
if (vsSdk.IsValid)
- {
- foundVsVersion = wantedVsVersion;
- return vsSdk;
- }
+ return vsVersion;
}
// 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
for (var i = VisualStudioVersion.Latest - 1; i >= VisualStudioVersion.VS2012; i--)
{
- var vsSdk = GetVisualStudioSdk(i, out foundVsVersion);
- if (vsSdk.IsValid)
- return vsSdk;
+ vsVersion = FindVSVersion(i);
+ if (vsVersion != VisualStudioVersion.Latest)
+ return vsVersion;
}
- foundVsVersion = VisualStudioVersion.Latest;
- return new ToolchainVersion();
+ return VisualStudioVersion.Latest;
+ }
+
+ /// Gets the system include folders for the given Visual Studio version.
+ /// The version of Visual Studio to get
+ /// system includes from.
+ public static List 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 sdks)
diff --git a/src/Parser/ParserOptions.cs b/src/Parser/ParserOptions.cs
index 02af6163..19efa455 100644
--- a/src/Parser/ParserOptions.cs
+++ b/src/Parser/ParserOptions.cs
@@ -95,6 +95,7 @@ namespace CppSharp.Parser
///
/// Sets up the parser options to work with the given Visual Studio toolchain.
///
+ /// The version of Visual Studio to look for.
public void SetupMSVC(VisualStudioVersion vsVersion)
{
MicrosoftMode = true;
@@ -102,15 +103,14 @@ namespace CppSharp.Parser
NoStandardIncludes = true;
Abi = CppAbi.Microsoft;
- VisualStudioVersion foundVsVersion;
- var includes = MSVCToolchain.GetSystemIncludes(vsVersion, out foundVsVersion);
- foreach (var include in includes)
+ vsVersion = MSVCToolchain.FindVSVersion(vsVersion);
+ foreach (var include in MSVCToolchain.GetSystemIncludes(vsVersion))
AddSystemIncludeDirs(include);
if (!LanguageVersion.HasValue)
LanguageVersion = CppSharp.Parser.LanguageVersion.CPP14_GNU;
- var clVersion = MSVCToolchain.GetCLVersion(foundVsVersion);
+ var clVersion = MSVCToolchain.GetCLVersion(vsVersion);
ToolSetToUse = clVersion.Major * 10000000 + clVersion.Minor * 100000;
AddArguments("-fms-extensions");