forked from qt-creator/qt-creator
CMake: Support pre-compiled headers in CMake fileapi reader
Adding this to other readers makes no sense: PCH support in cmake is younger than fileapi. Change-Id: I4cd88882764ab8a8f81316a17098878c8e3699eb Reviewed-by: Cristian Adam <cristian.adam@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -296,6 +296,12 @@ RawProjectParts generateRawProjectParts(const PreprocessedData &input,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString ending;
|
||||||
|
if (ci.language == "C")
|
||||||
|
ending = "/cmake_pch.h";
|
||||||
|
else if (ci.language == "CXX")
|
||||||
|
ending = "/cmake_pch.hxx";
|
||||||
|
|
||||||
++counter;
|
++counter;
|
||||||
RawProjectPart rpp;
|
RawProjectPart rpp;
|
||||||
rpp.setProjectFileLocation(t.sourceDir.pathAppended("CMakeLists.txt").toString());
|
rpp.setProjectFileLocation(t.sourceDir.pathAppended("CMakeLists.txt").toString());
|
||||||
@@ -312,9 +318,16 @@ RawProjectParts generateRawProjectParts(const PreprocessedData &input,
|
|||||||
cxxProjectFlags.commandLineFlags = cProjectFlags.commandLineFlags;
|
cxxProjectFlags.commandLineFlags = cProjectFlags.commandLineFlags;
|
||||||
rpp.setFlagsForCxx(cxxProjectFlags);
|
rpp.setFlagsForCxx(cxxProjectFlags);
|
||||||
|
|
||||||
|
const QString precompiled_header
|
||||||
|
= findOrDefault(t.sources, [&ending](const SourceInfo &si) {
|
||||||
|
return si.path.endsWith(ending);
|
||||||
|
}).path;
|
||||||
|
|
||||||
rpp.setFiles(transform<QList>(ci.sources, [&t, &sourceDir](const int si) {
|
rpp.setFiles(transform<QList>(ci.sources, [&t, &sourceDir](const int si) {
|
||||||
return sourceDir.absoluteFilePath(t.sources[static_cast<size_t>(si)].path);
|
return sourceDir.absoluteFilePath(t.sources[static_cast<size_t>(si)].path);
|
||||||
}));
|
}));
|
||||||
|
if (!precompiled_header.isEmpty())
|
||||||
|
rpp.setPreCompiledHeaders({precompiled_header});
|
||||||
|
|
||||||
const bool isExecutable = t.type == "EXECUTABLE";
|
const bool isExecutable = t.type == "EXECUTABLE";
|
||||||
rpp.setBuildTargetType(isExecutable ? ProjectExplorer::BuildTargetType::Executable
|
rpp.setBuildTargetType(isExecutable ? ProjectExplorer::BuildTargetType::Executable
|
||||||
|
Reference in New Issue
Block a user