diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index f0dc48a851b..cd5751f6604 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -554,6 +554,7 @@ const QList CMakeBuildSystem::appTargets() const bti.projectFilePath = ct.sourceDirectory.stringAppended("/"); bti.workingDirectory = ct.workingDirectory; bti.buildKey = ct.title; + bti.usesTerminal = !ct.linksToQtGui; // Workaround for QTCREATORBUG-19354: bti.runEnvModifier = [this](Environment &env, bool) { diff --git a/src/plugins/cmakeprojectmanager/cmakebuildtarget.h b/src/plugins/cmakeprojectmanager/cmakebuildtarget.h index 98127f20b36..54ce6957390 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildtarget.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildtarget.h @@ -53,6 +53,7 @@ public: QString title; Utils::FilePath executable; // TODO: rename to output? TargetType targetType = UtilityType; + bool linksToQtGui = false; Utils::FilePath workingDirectory; Utils::FilePath sourceDirectory; Utils::FilePath makeCommand; diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp index 81316f033bf..877b3111d16 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp @@ -256,6 +256,17 @@ QList generateBuildTargets(const PreprocessedData &input, extractBacktraceInformation(t.backtraceGraph, sourceDir, id.backtrace, 500)); } + // Is this a terminal application? + if (ct.targetType == ExecutableType && t.link && t.link.value().language == "CXX") { + for (const FragmentInfo &f : t.link.value().fragments) { + if (f.role != "libraries") + continue; + if (f.fragment.contains("QtGui") || f.fragment.contains("Qt5Gui") + || f.fragment.contains("Qt6Gui")) + ct.linksToQtGui = true; + } + } + return ct; }); return result;