summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2019-09-18 17:01:37 +0200
committerTobias Hunger <tobias.hunger@qt.io>2019-09-19 09:52:53 +0000
commit454261aaa28155bab710d370429bca8ff95df9f8 (patch)
tree4fb5d38186acecc9164c452204a7b3ee09dfae4e
parentf7453adda255960c3ebc855ec2a83897441494e0 (diff)
downloadqt-creator-454261aaa28155bab710d370429bca8ff95df9f8.tar.gz
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>
-rw-r--r--src/plugins/cmakeprojectmanager/fileapidataextractor.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp
index 420b7b1890..a9328d0c59 100644
--- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp
+++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp
@@ -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