diff options
Diffstat (limited to 'src/plugins/cpptools/compileroptionsbuilder.cpp')
-rw-r--r-- | src/plugins/cpptools/compileroptionsbuilder.cpp | 15 |
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; } |