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:
Tobias Hunger
2019-09-18 17:01:37 +02:00
parent f7453adda2
commit 454261aaa2

View File

@@ -296,6 +296,12 @@ RawProjectParts generateRawProjectParts(const PreprocessedData &input,
continue;
}
QString ending;
if (ci.language == "C")
ending = "/cmake_pch.h";
else if (ci.language == "CXX")
ending = "/cmake_pch.hxx";
++counter;
RawProjectPart rpp;
rpp.setProjectFileLocation(t.sourceDir.pathAppended("CMakeLists.txt").toString());
@@ -312,9 +318,16 @@ RawProjectParts generateRawProjectParts(const PreprocessedData &input,
cxxProjectFlags.commandLineFlags = cProjectFlags.commandLineFlags;
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) {
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";
rpp.setBuildTargetType(isExecutable ? ProjectExplorer::BuildTargetType::Executable