本文整理汇总了C#中CppSharp.Driver.BuildParseOptions方法的典型用法代码示例。如果您正苦于以下问题:C# Driver.BuildParseOptions方法的具体用法?C# Driver.BuildParseOptions怎么用?C# Driver.BuildParseOptions使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CppSharp.Driver
的用法示例。
在下文中一共展示了Driver.BuildParseOptions方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Run
public static void Run(ILibrary library)
{
var options = new DriverOptions();
var Log = new TextDiagnosticPrinter();
var driver = new Driver(options, Log);
library.Setup(driver);
driver.Setup();
if(driver.Options.Verbose)
Log.Level = DiagnosticKind.Debug;
if (!options.Quiet)
Log.Message("Parsing libraries...");
if (!driver.ParseLibraries())
return;
if (!options.Quiet)
Log.Message("Indexing library symbols...");
driver.Symbols.IndexSymbols();
if (!options.Quiet)
Log.Message("Parsing code...");
driver.BuildParseOptions();
if (!driver.ParseCode())
return;
if (!options.Quiet)
Log.Message("Processing code...");
library.Preprocess(driver, driver.ASTContext);
driver.SetupPasses(library);
driver.ProcessCode();
library.Postprocess(driver, driver.ASTContext);
if (!options.Quiet)
Log.Message("Generating code...");
var outputs = driver.GenerateCode();
foreach (var output in outputs)
{
foreach (var pass in driver.GeneratorOutputPasses.Passes)
{
pass.Driver = driver;
pass.VisitGeneratorOutput(output);
}
}
if (!driver.Options.DryRun)
driver.WriteCode(outputs);
if (driver.Options.IsCSharpGenerator)
driver.CompileCode();
}
示例2: BuildParseOptions
static void BuildParseOptions(Driver driver, Target target)
{
foreach (var header in driver.Options.Headers)
{
var source = driver.Project.AddFile(header);
source.Options = driver.BuildParseOptions(source);
if (header.Contains ("mini"))
continue;
source.Options.addDefines ("HAVE_SGEN_GC");
source.Options.addDefines ("HAVE_MOVING_COLLECTOR");
}
}
示例3: Run
public static void Run(ILibrary library)
{
var options = new DriverOptions();
var Log = new TextDiagnosticPrinter();
var driver = new Driver(options, Log);
library.Setup(driver);
driver.Setup();
if(driver.Options.Verbose)
Log.Level = DiagnosticKind.Debug;
if (!options.Quiet)
Log.Message("Parsing libraries...");
if (!driver.ParseLibraries())
return;
if (!options.Quiet)
Log.Message("Indexing library symbols...");
driver.Symbols.IndexSymbols();
if (!options.Quiet)
Log.Message("Parsing code...");
driver.SortModulesByDependencies();
driver.BuildParseOptions();
if (!driver.ParseCode())
{
Log.Error("CppSharp has encountered an error while parsing code.");
return;
}
new CleanUnitPass(options).VisitLibrary(driver.ASTContext);
options.Modules.RemoveAll(m => m.Units.All(u => u.Declarations.Count == 0));
if (!options.Quiet)
Log.Message("Processing code...");
library.Preprocess(driver, driver.ASTContext);
driver.SetupPasses(library);
driver.ProcessCode();
library.Postprocess(driver, driver.ASTContext);
if (!options.Quiet)
Log.Message("Generating code...");
var outputs = driver.GenerateCode();
foreach (var output in outputs)
{
foreach (var pass in driver.GeneratorOutputPasses.Passes)
{
pass.Driver = driver;
pass.VisitGeneratorOutput(output);
}
}
if (!driver.Options.DryRun)
{
driver.SaveCode(outputs);
if (driver.Options.IsCSharpGenerator && driver.Options.CompileCode)
foreach (var module in driver.Options.Modules)
{
driver.CompileCode(module);
if (driver.HasCompilationErrors)
break;
}
}
driver.Generator.Dispose();
driver.TargetInfo.Dispose();
}
示例4: BuildParseOptions
static void BuildParseOptions(Driver driver)
{
var json = File.ReadAllText(CompilationDatabasePath);
var compileUnits = JsonConvert.DeserializeObject<List<CompileUnit>>(json);
compileUnits = CleanCompileUnits(compileUnits);
compileUnits = compileUnits.OrderBy(unit => unit.file).ToList();
foreach (var unit in compileUnits) {
var source = driver.Project.AddFile(unit.file);
source.Options = driver.BuildParseOptions(source);
var args = unit.command.Split(new char[] {' '}).Skip(1);
foreach (var arg in args) {
// Skip some arguments that Clang complains about...
var arguments = new List<string> {
"-no-cpp-precomp",
"-Qunused-arguments",
"-fno-strict-aliasing",
"-Qunused-arguments",
"-MD",
"-MF",
"-c"
};
if (arguments.Contains(arg))
continue;
source.Options.addArguments(arg);
}
}
}