From 454261aaa28155bab710d370429bca8ff95df9f8 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Wed, 18 Sep 2019 17:01:37 +0200 Subject: 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 Reviewed-by: Alessandro Portale --- src/plugins/cmakeprojectmanager/fileapidataextractor.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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(ci.sources, [&t, &sourceDir](const int si) { return sourceDir.absoluteFilePath(t.sources[static_cast(si)].path); })); + if (!precompiled_header.isEmpty()) + rpp.setPreCompiledHeaders({precompiled_header}); const bool isExecutable = t.type == "EXECUTABLE"; rpp.setBuildTargetType(isExecutable ? ProjectExplorer::BuildTargetType::Executable -- cgit v1.2.1