aboutsummaryrefslogtreecommitdiffstats
path: root/src/qtprojectlib/MsBuildProject.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/qtprojectlib/MsBuildProject.cs')
-rw-r--r--src/qtprojectlib/MsBuildProject.cs24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/qtprojectlib/MsBuildProject.cs b/src/qtprojectlib/MsBuildProject.cs
index 70aafd16..e8aa4b95 100644
--- a/src/qtprojectlib/MsBuildProject.cs
+++ b/src/qtprojectlib/MsBuildProject.cs
@@ -589,6 +589,12 @@ namespace QtProjectLib
module.AdditionalLibrariesDebug.Select(x => Path.GetFileName(x)));
moduleLibs.Add(module.LibRelease);
moduleLibs.Add(module.LibDebug);
+
+ if (IsPrivateIncludePathUsed(module, compiler)) {
+ // Qt private module names, to copy to QtModules property
+ moduleNames.UnionWith(module.proVarQT.Split(' ')
+ .Select(x => string.Format("{0}-private", x)));
+ }
}
}
@@ -752,6 +758,24 @@ namespace QtProjectLib
return false;
}
+ bool IsPrivateIncludePathUsed(
+ QtModuleInfo module,
+ IEnumerable<XElement> compiler)
+ {
+ // Module private header path is present in compiler include dirs
+ var privateIncludePattern = new Regex(string.Format(
+ @"^\$\(QTDIR\)[\\\/]include[\\\/]{0}[\\\/]\d+\.\d+\.\d+",
+ module.LibraryPrefix));
+ if (compiler.Elements(ns + "AdditionalIncludeDirectories")
+ .SelectMany(x => x.Value.Split(';'))
+ .Any(x => privateIncludePattern.IsMatch(x))) {
+ return true;
+ }
+
+ // Private header path is not present
+ return false;
+ }
+
public bool SetDefaultWindowsSDKVersion(string winSDKVersion)
{
var xGlobals = this[Files.Project].xml