aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian Adam <[email protected]>2025-01-27 15:41:34 +0100
committerCristian Adam <[email protected]>2025-01-28 06:57:53 +0000
commit99185d04ec355f1046e9cc6fa45df247f5080536 (patch)
tree0ad6341c039ec327f938a5f7406812f62f589721
parentf13afb3eb9f878b126fb2b614d142d7d9aa1431b (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.cpp28
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";