H;0#*aXGi$QfKLzqiq+`
z#l=6>II(Bb1O}zT{hi_Sx5nf>W6_hHdV)L8x+a17=z;&Pk`JGI9AQ%G@p$llDwFGi
z<1XuOscU>GzI@)JZ|@^FDYmT_8J-0@C>~{ce`NLfD5+qrsjiP57VgRB%USV*_oSQB
zB-5-rK?hwEZT~(>^;~$z=I@z#&o`<$=w9ZTR(yQEWl`n#|2McM?E2N)@%1M2oe4>M
zJo7h1h&OLm4xhlt&)ZZG>SVvUS?0ooH6kJ(AM~hZhABolO%cidGkM0>o3}sa70gnW
zy-`r;Eth`0YFFz~rbGP&f6uf{3n@_D7;qt#apFNP_B#>h<|ZuhxbuF|we%b0JDk;L_e$>okLt!p7#3^CXtE-_(lPyDC@2v|*=N*v9^2@1IvH
zWwLR*#a!)8G-ljdCpF<{$x$=5pEKps9t$haXDL2@HjFE4X+mX^*qw|itsFBZaIfLs
z!nL@USwD*Q%$54se?Y6K@xFsnu@i5?hkra<6m8EO6W>zm^4!lb
z`P|%~BhAd#leph-e~MePdj5U$b9`Ge3-_=*sN1t@o8c9PWh$aNo~=@u5^IvABXtV=
zx5p%`iJqiXti+qp!9C3*TbDN=bM4kGcM3mq3&zi|&f6qxabfXRmmM!>>-OoM-V_oo
z!~UjxKjQ=CzNgH|tuI!-m~XmR)S2z}`X%+(dTJghCbvBI?EiJf-}0dIvjrblE4;ZE
zzc=B4w%_Kp98bgbCy3fSS$Mwa`uYQpudQrnxf=dpqNGg<&plqg?UTYk&(1jfH|xie
zg$5EOv-IC*=I(0W`ttVo9cJGjt!iJi@sHQN^-9;Te_B4T?wakwuD@qF{S>q-PDB(N
z-g>aU#VX41pZ=_jqsdh-q-+*kj@ij~eeLCSx0i9*8n|n69a!IDRegN!y!vZ7Az8;x
z+kZ3N?{IpTlmC%rO5c7~8r7$M{2zPGVAl7gUUDa#m+#v6>6_KMqN!WMEZ(2~vg@H*
zAXk#MnDw?Uy$3~W=ajWo7k@r4eRoBL`QOhSBGa`rGkJ4o+&ZRpC{*fnu+>AkeV32D
z`RG2A(=R{yu*pTOpWJ?YxfRRLu-2TlIyPXNHcv%|sL*7vxQ7Cv}8w?)uw#eyYI{4a^F-Y|_(+)3va
z<3=tKk?Ly0boH~caUT@^g%;1Y;tbw#t@dPSa>2>NdC?&s->KKGbKO`c=Cnqi{m8E+
z3nGFI)9)DYxG-!t^AGlo-8H4Cd%=eWskowL?GaK!8^w+;5_8hIbZ`TonOf82M3bNlp4k2c@Mj;j4ZJiiWhl*)YD5a`(9D#YWh&>|_e_1U$&J0Zc->mDEY
zeAeuC4ZlM8r#GA0Z3;Y|M4h$HZ#~L=-T~J)7w@B3H#Il{W
zb3!FD&pRJH!6Cpa6QQksIH!DW`8_MUj+Dk+z1b?MPb2@j=6wFfad}&9&xhEnVcw^*
zyuY4^;nB!qo%Q7GswrkymC}R09thk1zR%!K`P8V=>K~rb6+uhacqD1tvPDnsvw3MC
z;CnS}*>9Ph>%QDr9=l??U+Ijl$5V<+FL8yeTf43_>o4o%6jN6jHR0(x9+O|o@@VhV
zsrsQfDQRnE;iO1jj!W|nH@~{J^uUzQtU-R2Ua^7(p3mYV%~sj0_o}qs;BOVK9>E?Y
zw0z3^)xyi(m0g*{QZe!IJ-&B;%^2+%S-YC&zSn)KVl2oj7?M5p?esneL6PNJ-CLJ@
z)tK>POVyKGkFMm4Uf=Aet0sM&MNQ>@75i+R&xw{dw@Ai^E$NwW_W9E@KJVF57lTD~
z6SU;|JvSQf7BqU@EmQ7aZMi2Xir+q5ebLho+m%CtYxUQz*U8PgKX*!q&)v4N$b~0%
zTHTy@_vgJ$f-4O*x4JYQdN?~^zn93lT`yDprM-*_Lt_tTmZ}QQz2T+$y!S=V$y2L>
z+RB-qoxOebtp;C2>a7DyGA7EzoqFAL$^Gf%>7gmYGZa*XgRfVebDQE}ou+&>U)e|Z
zk^j?3*~H&lUsW9m@w)ac`|7XbHv^>EzA^?f_!y}DUZQ$Nc3O}eqncKbiG$|;xvS4E
zJ@miaX^CROE35m_!cp-%IhTn|tW3Sh(RyRk=~LQ1Cabwaa(tWLv^#|?$vE)vB%eCh
zP06L*&tv9hXp|n`E33J-%=qN&c_ROBD`pu+#s4gO!Sd&qyXn2SgrdF7$NXn=%n-?a
zQIj8;tGV_X$8yt|IZW}rD(|l{>TcPUKY3GNw)Mj4%XAiUhTN|5D-i$j?#`SKdec{i
zz7mal_+4#Qc>F`rtd;u`3%%~$NlbBa<%-Ys^eB9`Shurlqe4t{_Rc8}7Y9DQ%`9Bj
zlfh;nbEB-t|H`ar>%hyxg^F=s43%Q~n0M#Bd+=hT!1_JsXMa(>_oTK$;Qsc8j@_Jc
z8B?oYnpJ>P+cQqB+AEG?>#M`t=6-qWUwtg5{kCMR^!DxS3;^I^!mt1U
literal 0
HcmV?d00001
diff --git a/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc b/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc
index d267eaf8f60..d34997b1ee0 100644
--- a/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc
+++ b/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc
@@ -257,7 +257,7 @@
The \uicontrol Timeline view displays a graphical representation of CPU
usage per thread and a condensed view of all recorded events.
- \image qtcreator-performance-analyzer-timeline.png {Performance Analyzer}
+ \image qtcreator-performance-analyzer-timeline.webp {Performance Analyzer Timeline view}
Each category in the timeline describes a thread in the application. Move
the cursor on an event (5) on a row to see how long it takes and which
@@ -452,12 +452,16 @@
\section1 Loading and Saving Trace Files
You can save and load trace data in a format specific to the
- Performance Analyzer with the respective entries in \uicontrol Analyze >
- \uicontrol {Performance Analyzer Options}. This format is self-contained, and
+ Performance Analyzer (.ptq). This format is self-contained, and
therefore loading it does not require you to specify the recording
environment. You can transfer such trace files to a different computer
without any toolchain or debug symbols and analyze them there.
+ To load trace data, go to \uicontrol Analyze >
+ \uicontrol {Performance Analyzer Options} > \uicontrol {Load Trace File}.
+
+ To save trace data, select \uicontrol {Save Trace File}.
+
\section1 Troubleshooting
Performance Analyzer might fail to record data for the following reasons:
From e5dcb965482b4753d0c363af7da4cbf6d5a5e9ae Mon Sep 17 00:00:00 2001
From: Cristian Adam
Date: Wed, 28 Aug 2024 17:33:59 +0200
Subject: [PATCH 08/10] CMakePM: Fix always showing "Build > Clear CMake
Configuration"
By always I mean for all build systems. I've noticed this with QMake and
it makes no sense.
Change-Id: Ib59b10722fa07a7009f3a2033b113f7038c19dd0
Reviewed-by: Marcus Tillmanns
---
src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
index b81b03bee6d..996840eb9fd 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp
@@ -75,6 +75,7 @@ private:
QAction *m_runCMakeAction;
QAction *m_clearCMakeCacheAction;
QAction *m_runCMakeActionContextMenu;
+ QAction *m_clearCMakeCacheActionContextMenu;
QAction *m_rescanProjectAction;
QAction *m_buildFileContextMenu;
QAction *m_reloadCMakePresetsAction;
@@ -141,7 +142,7 @@ CMakeManager::CMakeManager()
ActionBuilder(this, Constants::CLEAR_CMAKE_CACHE_CONTEXT_MENU)
.setText(Tr::tr("Clear CMake Configuration"))
.setContext(projectContext)
- .bindContextAction(&m_clearCMakeCacheAction)
+ .bindContextAction(&m_clearCMakeCacheActionContextMenu)
.setCommandAttribute(Command::CA_Hide)
.addToContainer(PEC::M_PROJECTCONTEXT, PEC::G_PROJECT_REBUILD)
.addOnTriggered(this, [this] { clearCMakeCache(ProjectManager::startupBuildSystem()); });
@@ -237,6 +238,7 @@ void CMakeManager::updateCmakeActions(Node *node)
const bool visible = project && !BuildManager::isBuilding(project);
m_runCMakeAction->setVisible(visible);
m_runCMakeActionContextMenu->setEnabled(visible);
+ m_clearCMakeCacheActionContextMenu->setVisible(visible);
m_clearCMakeCacheAction->setVisible(visible);
m_rescanProjectAction->setVisible(visible);
m_cmakeProfilerAction->setEnabled(visible);
From 1b57e95c14d78119bbf8358bb52dfc1be0cde140 Mon Sep 17 00:00:00 2001
From: Sami Shalayel
Date: Tue, 20 Aug 2024 12:45:05 +0200
Subject: [PATCH 09/10] Use qmllint for QML/JS > Run Checks when possible
Move the code from cmakelocatorfilter.cpp that builds a custom cmake
target to a non-internal header, and use it to trigger builds of the
"all_qmllint" target when doing QML/JS > Run Checks.
Also clean the warnings from qmllint when running embedded code model
checks and vice-versa.
Task-number: QTCREATORBUG-31410
Change-Id: If22941fc63590caad148804a53edc62f9eb76e34
Reviewed-by: Jarek Kobus
Reviewed-by: hjk
Reviewed-by: Ulf Hermann
---
.../cmakeprojectmanager/CMakeLists.txt | 1 +
.../cmakelocatorfilter.cpp | 34 +------------
.../cmakeprojectmanager/targethelper.cpp | 48 +++++++++++++++++++
.../cmakeprojectmanager/targethelper.h | 14 ++++++
src/plugins/qmljseditor/CMakeLists.txt | 2 +-
.../qmljseditor/qmljseditorconstants.h | 2 +
src/plugins/qmljseditor/qmltaskmanager.cpp | 24 ++++++++++
7 files changed, 92 insertions(+), 33 deletions(-)
create mode 100644 src/plugins/cmakeprojectmanager/targethelper.cpp
create mode 100644 src/plugins/cmakeprojectmanager/targethelper.h
diff --git a/src/plugins/cmakeprojectmanager/CMakeLists.txt b/src/plugins/cmakeprojectmanager/CMakeLists.txt
index 2c58b4f08b3..7b282e79c85 100644
--- a/src/plugins/cmakeprojectmanager/CMakeLists.txt
+++ b/src/plugins/cmakeprojectmanager/CMakeLists.txt
@@ -43,6 +43,7 @@ add_qtc_plugin(CMakeProjectManager
presetsparser.cpp presetsparser.h
presetsmacros.cpp presetsmacros.h
projecttreehelper.cpp projecttreehelper.h
+ targethelper.cpp targethelper.h
3rdparty/cmake/cmListFileCache.cxx
3rdparty/cmake/cmListFileLexer.cxx
3rdparty/cmake/cmListFileCache.h
diff --git a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp
index 2445cf58b60..01ed02bdb0c 100644
--- a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp
@@ -3,10 +3,10 @@
#include "cmakelocatorfilter.h"
-#include "cmakebuildstep.h"
#include "cmakebuildsystem.h"
#include "cmakeproject.h"
#include "cmakeprojectmanagertr.h"
+#include "targethelper.h"
#include
@@ -108,36 +108,6 @@ static void setupFilter(ILocatorFilter *filter)
filter, projectListUpdated);
}
-static void buildAcceptor(const FilePath &projectPath, const QString &displayName)
-{
- // Get the project containing the target selected
- const auto cmakeProject = qobject_cast(
- Utils::findOrDefault(ProjectManager::projects(), [projectPath](Project *p) {
- return p->projectFilePath() == projectPath;
- }));
- if (!cmakeProject || !cmakeProject->activeTarget()
- || !cmakeProject->activeTarget()->activeBuildConfiguration())
- return;
-
- if (BuildManager::isBuilding(cmakeProject))
- BuildManager::cancel();
-
- // Find the make step
- const BuildStepList *buildStepList =
- cmakeProject->activeTarget()->activeBuildConfiguration()->buildSteps();
- const auto buildStep = buildStepList->firstOfType();
- if (!buildStep)
- return;
-
- // Change the make step to build only the given target
- const QStringList oldTargets = buildStep->buildTargets();
- buildStep->setBuildTargets({displayName});
-
- // Build
- BuildManager::buildProjectWithDependencies(cmakeProject);
- buildStep->setBuildTargets(oldTargets);
-}
-
class CMakeBuildTargetFilter final : ILocatorFilter
{
public:
@@ -152,7 +122,7 @@ public:
}
private:
- LocatorMatcherTasks matchers() final { return cmakeMatchers(&buildAcceptor); }
+ LocatorMatcherTasks matchers() final { return cmakeMatchers(&buildTarget); }
};
// OpenCMakeTargetLocatorFilter
diff --git a/src/plugins/cmakeprojectmanager/targethelper.cpp b/src/plugins/cmakeprojectmanager/targethelper.cpp
new file mode 100644
index 00000000000..3d18deaa84a
--- /dev/null
+++ b/src/plugins/cmakeprojectmanager/targethelper.cpp
@@ -0,0 +1,48 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+#include "targethelper.h"
+
+#include
+#include
+#include
+#include
+#include
+
+#include "cmakebuildstep.h"
+#include "cmakebuildsystem.h"
+#include "cmakeproject.h"
+
+namespace CMakeProjectManager {
+
+void buildTarget(const Utils::FilePath &projectPath, const QString &targetName)
+{
+ // Get the project containing the target selected
+ const auto cmakeProject = qobject_cast(Utils::findOrDefault(
+ ProjectExplorer::ProjectManager::projects(), [projectPath](ProjectExplorer::Project *p) {
+ return p->projectFilePath() == projectPath;
+ }));
+ if (!cmakeProject || !cmakeProject->activeTarget()
+ || !cmakeProject->activeTarget()->activeBuildConfiguration())
+ return;
+
+ if (ProjectExplorer::BuildManager::isBuilding(cmakeProject))
+ ProjectExplorer::BuildManager::cancel();
+
+ // Find the make step
+ const ProjectExplorer::BuildStepList *buildStepList
+ = cmakeProject->activeTarget()->activeBuildConfiguration()->buildSteps();
+ const auto buildStep = buildStepList->firstOfType();
+ if (!buildStep)
+ return;
+
+ // Change the make step to build only the given target
+ const QStringList oldTargets = buildStep->buildTargets();
+ buildStep->setBuildTargets({targetName});
+
+ // Build
+ ProjectExplorer::BuildManager::buildProjectWithDependencies(cmakeProject);
+ buildStep->setBuildTargets(oldTargets);
+}
+
+} // namespace CMakeProjectManager
diff --git a/src/plugins/cmakeprojectmanager/targethelper.h b/src/plugins/cmakeprojectmanager/targethelper.h
new file mode 100644
index 00000000000..1053d2b6d1b
--- /dev/null
+++ b/src/plugins/cmakeprojectmanager/targethelper.h
@@ -0,0 +1,14 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+
+#pragma once
+
+#include "cmake_global.h"
+
+#include
+
+namespace CMakeProjectManager {
+
+CMAKE_EXPORT void buildTarget(const Utils::FilePath &projectPath, const QString &targetName);
+
+} // namespace CMakeProjectManager
diff --git a/src/plugins/qmljseditor/CMakeLists.txt b/src/plugins/qmljseditor/CMakeLists.txt
index 122bb39aed1..6f42b6794e5 100644
--- a/src/plugins/qmljseditor/CMakeLists.txt
+++ b/src/plugins/qmljseditor/CMakeLists.txt
@@ -1,5 +1,5 @@
add_qtc_plugin(QmlJSEditor
- DEPENDS LanguageUtils QmlJS QmlEditorWidgets
+ DEPENDS LanguageUtils QmlJS QmlEditorWidgets CMakeProjectManager
PLUGIN_DEPENDS Core ProjectExplorer QmlJSTools TextEditor LanguageClient
SOURCES
qmlexpressionundercursor.cpp qmlexpressionundercursor.h
diff --git a/src/plugins/qmljseditor/qmljseditorconstants.h b/src/plugins/qmljseditor/qmljseditorconstants.h
index 25cc711bf0c..5ffbbc98c3b 100644
--- a/src/plugins/qmljseditor/qmljseditorconstants.h
+++ b/src/plugins/qmljseditor/qmljseditorconstants.h
@@ -23,5 +23,7 @@ const char TASK_CATEGORY_QML_ANALYSIS[] = "Task.Category.QmlAnalysis";
const char QML_SNIPPETS_GROUP_ID[] = "QML";
+const char QMLLINT_BUILD_TARGET[] = "all_qmllint";
+
} // namespace Constants
} // namespace QmlJSEditor
diff --git a/src/plugins/qmljseditor/qmltaskmanager.cpp b/src/plugins/qmljseditor/qmltaskmanager.cpp
index ca985f4022e..46cabe60992 100644
--- a/src/plugins/qmljseditor/qmltaskmanager.cpp
+++ b/src/plugins/qmljseditor/qmltaskmanager.cpp
@@ -3,11 +3,16 @@
#include "qmltaskmanager.h"
#include "qmljseditorconstants.h"
+#include "qmllssettings.h"
+#include
#include
#include
+#include
#include
+#include
#include
+#include
#include
#include
#include
@@ -113,8 +118,27 @@ void QmlTaskManager::updateSemanticMessagesNow()
updateMessagesNow(true);
}
+static void triggerQmllintCMakeTarget()
+{
+ CMakeProjectManager::buildTarget(
+ ProjectManager::startupProject()->projectFilePath(), Constants::QMLLINT_BUILD_TARGET);
+}
+
+
void QmlTaskManager::updateMessagesNow(bool updateSemantic)
{
+ // heuristic: qmllint will output meaningful warnings if qmlls is enabled
+ if (QmllsSettingsManager::instance()->lastSettings().useQmlls) {
+ // abort any update that's going on already, and remove old codemodel warnings
+ m_messageCollector.cancel();
+ removeAllTasks(true);
+ triggerQmllintCMakeTarget();
+ return;
+ }
+
+ // clear out the qmllint warnings when qmlls was disabled after being enabled
+ TaskHub::clearTasks(ProjectExplorer::Constants::TASK_CATEGORY_COMPILE);
+
// don't restart a small update if a big one is running
if (!updateSemantic && m_updatingSemantic)
return;
From 2210d30980945929fc04e60b48f89c5889522f4a Mon Sep 17 00:00:00 2001
From: Christian Stenger
Date: Thu, 29 Aug 2024 15:45:06 +0200
Subject: [PATCH 10/10] CMakePM: Add files to qbs build
Amends 1b57e95c14d78119bbf8358bb52dfc1be0cde140.
Change-Id: I1f80f71aafeaa3e0f2c412c79b73b12aeb03e009
Reviewed-by: Christian Kandeler
---
src/plugins/cmakeprojectmanager/cmakeprojectmanager.qbs | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.qbs b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.qbs
index 98849a71f57..d51d24982e8 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.qbs
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.qbs
@@ -86,7 +86,9 @@ QtcPlugin {
"presetsmacros.cpp",
"presetsmacros.h",
"projecttreehelper.cpp",
- "projecttreehelper.h"
+ "projecttreehelper.h",
+ "targethelper.cpp",
+ "targethelper.h",
]
Group {