forked from qt-creator/qt-creator
C++: fix include/framework path handling.
Instead of having two lists of paths, now only one list is used where both include paths and framework paths can be mixed. This reflects the way the compiler is invoked, and retains the (correct) search order. Task-number: QTCREATORBUG-11599 Change-Id: I373953e3e305df5b7a0d10920e12d146584adf9f Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
@@ -338,27 +338,32 @@ bool CMakeProject::parseCMakeLists()
|
||||
CppTools::CppModelManagerInterface::ProjectInfo pinfo = modelmanager->projectInfo(this);
|
||||
pinfo.clearProjectParts();
|
||||
|
||||
CppTools::ProjectPart::Ptr part(new CppTools::ProjectPart);
|
||||
typedef CppTools::ProjectPart ProjectPart;
|
||||
ProjectPart::Ptr part(new ProjectPart);
|
||||
part->project = this;
|
||||
part->displayName = displayName();
|
||||
part->projectFile = projectFilePath().toString();
|
||||
|
||||
// This explicitly adds -I. to the include paths
|
||||
part->includePaths += projectDirectory().toString();
|
||||
part->headerPaths += ProjectPart::HeaderPath(projectDirectory().toString(),
|
||||
ProjectPart::HeaderPath::IncludePath);
|
||||
|
||||
foreach (const QString &includeFile, cbpparser.includeFiles()) {
|
||||
ProjectPart::HeaderPath hp(includeFile, ProjectPart::HeaderPath::IncludePath);
|
||||
|
||||
// CodeBlocks is utterly ignorant of frameworks on Mac, and won't report framework
|
||||
// paths. The work-around is to check if the include path ends in ".framework", and
|
||||
// if so, add the parent directory as framework path.
|
||||
if (includeFile.endsWith(QLatin1String(".framework"))) {
|
||||
const int slashIdx = includeFile.lastIndexOf(QLatin1Char('/'));
|
||||
if (slashIdx != -1) {
|
||||
part->frameworkPaths += includeFile.left(slashIdx);
|
||||
hp = ProjectPart::HeaderPath(includeFile.left(slashIdx),
|
||||
ProjectPart::HeaderPath::FrameworkPath);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
part->includePaths += includeFile;
|
||||
part->headerPaths += hp;
|
||||
}
|
||||
|
||||
part->projectDefines += cbpparser.defines();
|
||||
|
Reference in New Issue
Block a user