diff options
author | Cristian Adam <[email protected]> | 2025-01-27 15:41:34 +0100 |
---|---|---|
committer | Cristian Adam <[email protected]> | 2025-01-28 06:57:53 +0000 |
commit | 99185d04ec355f1046e9cc6fa45df247f5080536 (patch) | |
tree | 0ad6341c039ec327f938a5f7406812f62f589721 | |
parent | f13afb3eb9f878b126fb2b614d142d7d9aa1431b (diff) |
CMakePM: Add support for Objective C/C++ languages
Fixes: QTCREATORBUG-32282
Change-Id: I034a6676b8eee83bc96df1f4d78361c045523a9f
Reviewed-by: Marcus Tillmanns <[email protected]>
-rw-r--r-- | src/plugins/cmakeprojectmanager/fileapidataextractor.cpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp index bf090a8711d..68a16872d5b 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp @@ -411,7 +411,8 @@ static RawProjectParts generateRawProjectParts(const QFuture<void> &cancelFuture bool needPostfix = t.compileGroups.size() > 1; int count = 1; for (const CompileInfo &ci : t.compileGroups) { - if (ci.language != "C" && ci.language != "CXX" && ci.language != "CUDA") + if (ci.language != "C" && ci.language != "CXX" && ci.language != "OBJC" + && ci.language != "OBJCXX" && ci.language != "CUDA") continue; // No need to bother the C++ codemodel // CMake users worked around Creator's inability of listing header files by creating @@ -429,13 +430,12 @@ static RawProjectParts generateRawProjectParts(const QFuture<void> &cancelFuture QString ending; QString qtcPchFile; - if (ci.language == "C") { - ending = "/cmake_pch.h"; - qtcPchFile = "qtc_cmake_pch.h"; - } - else if (ci.language == "CXX") { - ending = "/cmake_pch.hxx"; - qtcPchFile = "qtc_cmake_pch.hxx"; + static const QHash<QString, QString> languageToExtension + = {{"C", ".h"}, {"CXX", ".hxx"}, {"OBJC", ".objc.h"}, {"OBJCXX", ".objcxx.hxx"}}; + + if (languageToExtension.contains(ci.language)) { + ending = "/cmake_pch" + languageToExtension[ci.language]; + qtcPchFile = "qtc_cmake_pch" + languageToExtension[ci.language]; } RawProjectPart rpp; @@ -473,9 +473,9 @@ static RawProjectParts generateRawProjectParts(const QFuture<void> &cancelFuture }); const QString headerMimeType = [&]() -> QString { - if (ci.language == "C") { + if (ci.language == "C" || ci.language == "OBJC") { return Utils::Constants::C_HEADER_MIMETYPE; - } else if (ci.language == "CXX") { + } else if (ci.language == "CXX" || ci.language == "OBJCXX") { return Utils::Constants::CPP_HEADER_MIMETYPE; } return {}; @@ -485,9 +485,9 @@ static RawProjectParts generateRawProjectParts(const QFuture<void> &cancelFuture if (kind == CppEditor::ProjectFile::AmbiguousHeader) return true; - if (ci.language == "C") + if (ci.language == "C" || ci.language == "OBJC") return CppEditor::ProjectFile::isC(kind); - else if (ci.language == "CXX") + else if (ci.language == "CXX" || ci.language == "OBJCXX") return CppEditor::ProjectFile::isCxx(kind); return false; @@ -558,9 +558,9 @@ static RawProjectParts generateRawProjectParts(const QFuture<void> &cancelFuture RawProjectPartFlags projectFlags; projectFlags.commandLineFlags = fragments; - if (ci.language == "C") + if (ci.language == "C" || ci.language == "OBJC") rpp.setFlagsForC(projectFlags); - else if (ci.language == "CXX") + else if (ci.language == "CXX" || ci.language == "OBJCXX") rpp.setFlagsForCxx(projectFlags); const bool isExecutable = t.type == "EXECUTABLE"; |