using System; using System.IO; using System.Linq; class Program { static void Main(string[] args) { // Resolve vk.xml path string vkXml = args.FirstOrDefault(a => a.EndsWith("vk.xml", StringComparison.OrdinalIgnoreCase)) ?? GuessVkXmlFromEnv() ?? @"C:\VulkanSDK\1.4.313.0\share\vulkan\registry\vk.xml"; if (!File.Exists(vkXml)) { Console.Error.WriteLine($"vk.xml not found: {vkXml}"); Environment.Exit(1); } // Output dir (.../out/VulkanPP) string outRoot = args.FirstOrDefault(a => a.StartsWith("--out="))?.Substring("--out=".Length) ?? Path.Combine(Environment.CurrentDirectory, "out"); string outDir = Path.Combine(outRoot, "VulkanPP"); Directory.CreateDirectory(outDir); Console.WriteLine($"Parsing: {vkXml}"); var spec = VkSpec.Load(vkXml); // Optional sugar methods (empty by default) var sugar = Array.Empty(); Console.WriteLine($"Generating to: {outDir}"); var gen = new Generator(spec, outDir, sugar); gen.GenerateAll(); Console.WriteLine("Done."); } static string? GuessVkXmlFromEnv() { var sdk = Environment.GetEnvironmentVariable("VULKAN_SDK"); if (string.IsNullOrWhiteSpace(sdk)) return null; string candidate = Path.Combine(sdk, "share", "vulkan", "registry", "vk.xml"); return File.Exists(candidate) ? candidate : null; } }