diff --git a/src/Generator/Generators/CLI/CLIHeadersTemplate.cs b/src/Generator/Generators/CLI/CLIHeadersTemplate.cs index f9710ba4..887d3861 100644 --- a/src/Generator/Generators/CLI/CLIHeadersTemplate.cs +++ b/src/Generator/Generators/CLI/CLIHeadersTemplate.cs @@ -51,11 +51,19 @@ namespace CppSharp.Generators.CLI var includes = new SortedSet(StringComparer.InvariantCulture); foreach (var typeRef in typeReferenceCollector.TypeReferences) - { + { + if (typeRef.Include.TranslationUnit == TranslationUnit) + continue; + if (typeRef.Include.File == TranslationUnit.FileName) continue; var include = typeRef.Include; + var unit = include.TranslationUnit; + + if (unit != null && unit.Ignore) + continue; + if(!string.IsNullOrEmpty(include.File) && include.InHeader) includes.Add(include.ToString()); } diff --git a/src/Generator/Generators/CLI/CLITextTemplate.cs b/src/Generator/Generators/CLI/CLITextTemplate.cs index 525471cb..c09ba929 100644 --- a/src/Generator/Generators/CLI/CLITextTemplate.cs +++ b/src/Generator/Generators/CLI/CLITextTemplate.cs @@ -13,6 +13,8 @@ namespace CppSharp.Generators.CLI } public string File; + public TranslationUnit TranslationUnit; + public IncludeKind Kind; public bool InHeader; diff --git a/src/Generator/Generators/CLI/CLITypeReferences.cs b/src/Generator/Generators/CLI/CLITypeReferences.cs index 7ad47d32..bd64228b 100644 --- a/src/Generator/Generators/CLI/CLITypeReferences.cs +++ b/src/Generator/Generators/CLI/CLITypeReferences.cs @@ -88,6 +88,7 @@ namespace CppSharp.Generators.CLI GetTypeReference(decl).Include = new Include() { File = declFile, + TranslationUnit = decl.Namespace.TranslationUnit, Kind = Include.IncludeKind.Quoted, InHeader = IsIncludeInHeader(record) };