From 6838e639562fdc78977c30ec57f6cfd4aba8c606 Mon Sep 17 00:00:00 2001 From: triton Date: Fri, 25 Oct 2013 01:39:26 +0100 Subject: [PATCH] Fixed parser generation by searching for the source directory. --- src/CppParser/Bindings/ParserGen.cs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/CppParser/Bindings/ParserGen.cs b/src/CppParser/Bindings/ParserGen.cs index fd4d06a9..0b35689f 100644 --- a/src/CppParser/Bindings/ParserGen.cs +++ b/src/CppParser/Bindings/ParserGen.cs @@ -1,4 +1,5 @@ using System; +using System.IO; using CppSharp.AST; using CppSharp.Generators; @@ -13,6 +14,23 @@ namespace CppSharp Kind = kind; } + static string GetSourceDirectory() + { + var directory = Directory.GetParent(Directory.GetCurrentDirectory()); + + while (directory != null) + { + var path = Path.Combine(directory.FullName, "src"); + + if (Directory.Exists(path)) + return path; + + directory = directory.Parent; + } + + throw new Exception("Could not find sources directory"); + } + public void Setup(Driver driver) { var options = driver.Options; @@ -20,7 +38,8 @@ namespace CppSharp options.GeneratorKind = Kind; options.Headers.Add("AST.h"); options.Headers.Add("CppParser.h"); - options.IncludeDirs.Add("../../../../src/CppParser/"); + var basePath = Path.Combine(GetSourceDirectory(), "CppParser"); + options.IncludeDirs.Add(basePath); options.Libraries.Add("CppSharp.CppParser.lib"); options.LibraryDirs.Add("."); options.OutputDir = "../../../../src/CppParser/Bindings/";