diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2019-09-18 17:01:37 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2019-09-19 09:52:53 +0000 |
commit | 454261aaa28155bab710d370429bca8ff95df9f8 (patch) | |
tree | 4fb5d38186acecc9164c452204a7b3ee09dfae4e /src/plugins/cmakeprojectmanager/fileapidataextractor.cpp | |
parent | f7453adda255960c3ebc855ec2a83897441494e0 (diff) | |
download | qt-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>
Diffstat (limited to 'src/plugins/cmakeprojectmanager/fileapidataextractor.cpp')
-rw-r--r-- | src/plugins/cmakeprojectmanager/fileapidataextractor.cpp | 13 |
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 |