summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/compileroptionsbuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/compileroptionsbuilder.cpp')
-rw-r--r--src/plugins/cpptools/compileroptionsbuilder.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp
index a2ed615894..1188075a2a 100644
--- a/src/plugins/cpptools/compileroptionsbuilder.cpp
+++ b/src/plugins/cpptools/compileroptionsbuilder.cpp
@@ -26,6 +26,7 @@
#include "compileroptionsbuilder.h"
#include <coreplugin/icore.h>
+#include <coreplugin/vcsmanager.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projectexplorerconstants.h>
@@ -137,7 +138,12 @@ static Utils::FileName projectTopLevelDirectory(const ProjectPart &projectPart)
{
if (!projectPart.project)
return Utils::FileName();
- return projectPart.project->projectDirectory();
+ const Utils::FileName result = projectPart.project->projectDirectory();
+ const Utils::FileName vcsTopLevel = Utils::FileName::fromString(
+ Core::VcsManager::findTopLevelForDirectory(result.toString()));
+ if (result.isChildOf(vcsTopLevel))
+ return vcsTopLevel;
+ return result;
}
void CompilerOptionsBuilder::addHeaderPathOptions()
@@ -165,10 +171,13 @@ void CompilerOptionsBuilder::addHeaderPathOptions()
// intentional fall-through:
case HeaderPath::IncludePath:
path = absoluteDirectory(headerPath.path);
- if (path == projectDirectory || path.isChildOf(projectDirectory))
+ if (projectDirectory.isEmpty()
+ || path == projectDirectory
+ || path.isChildOf(projectDirectory)) {
prefix = defaultPrefix;
- else
+ } else {
prefix = SYSTEM_INCLUDE_PREFIX;
+ }
break;
}