Commit Graph

381 Commits

Author SHA1 Message Date
Alessandro Portale
72d91dc94a Use qAsConst with non-const Qt containers in range-loops
... in various places

Change-Id: Ic6c0c1b9437a1ed402105c7a14a1f5f9454a68d4
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
2021-02-17 14:43:29 +00:00
Eike Ziller
6a2a07d516 Qbs: Avoid popping up general messages pane
Except on direct user action. Use more evocative message manager API.

Task-number: QTCREATORBUG-24430
Change-Id: I44c6088904b2018baccb72cd3651e2ab62dc1358
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-12-17 11:22:54 +00:00
Eike Ziller
1283b15117 Merge remote-tracking branch 'origin/4.14'
Conflicts:
	doc/qtdesignstudio/examples/loginui1/qtquickcontrols2.conf
	doc/qtdesignstudio/examples/loginui2/qtquickcontrols2.conf
	doc/qtdesignstudio/examples/loginui3/qtquickcontrols2.conf
	doc/qtdesignstudio/examples/loginui4/qtquickcontrols2.conf
	share/qtcreator/debugger/dumper.py
	share/qtcreator/debugger/qttypes.py

Change-Id: Id44a67cdeeb0889ff96eddcdf409d20ca7cbdd0b
2020-12-10 13:02:02 +01:00
Björn Schäpers
c422962709 QbsProject: Fix set LangaugeVersion for newer standards
I have some products which export c++20, some c++17 (not yet ported) and
some which do not specify the language itself. And sometimes I end up
with too much errors from the code model, because it sets the language
to C++11 or C++17.

Also adapted the C language.

Change-Id: I0056c8d873191d49164c3e7f3e4fdb24ccc1fb9b
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-12-07 20:05:38 +00:00
Nikolai Kosjar
888ea6bbbb CppTools: Take "-include" files into account
Fixes: QTCREATORBUG-20602
Change-Id: Ibfc518fc64ed75f93265db800558ec1d2e424bb4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-11-05 08:49:24 +00:00
Christian Kandeler
c2913f65e4 QbsProjectManager: Do not cache incomplete environment
Retrieving the run environment for a qbs product can fail if the qbs
session is busy at the time of the call. In such a case, caching the
result will cause subsequent accesses to retrieve an incomplete
environment. This patch fixes the latter problem.

Task-number: QTCREATORBUG-24599
Change-Id: Ia0c6831cf371995ac8399d15e4dd93b8bb6e4f3b
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2020-10-23 07:21:25 +00:00
Christian Stenger
0de1668802 Fix qmake build of unittests
This basically continues / amends work done
with e1c88116b3.

Change-Id: Ia8b3a4694e7fea4c15e344839f87c11fbe8fbbf4
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-08-27 04:28:52 +00:00
Christian Kandeler
7fad01eb02 QbsProjectManager: Consider cpp.distributionIncludePaths
... and pass them to the code model.

Fixes: QTCREATORBUG-24162
Change-Id: I4f33bba659fca957c56f2fcb4b8adce28533074b
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
2020-06-26 09:00:32 +00:00
Christian Stenger
6e798401a0 Fix plugin unit tests when using projects
The ClangTools and the AutoTest plugins use an internal
mechanism to load and configure a project when performing
their integrated unit tests.
Both assumed to have exactly one kit present for these
tests.
Make it possible to have more kits present when starting
with existing settings or if more kits get automatically
generated when starting with clean settings.

Change-Id: If2bc66320c4854f1d34a19d17107e8f0b7d64d39
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-06-17 04:13:30 +00:00
Christian Kandeler
1d2af6b4cc clang-tidy: Consider context when encountering duplicate files
Prefer source files from contexts where we know that they actually get
built and thus should have includes and compiler flags properly set up.
Also fix the qmake and qbs project managers to not mislabel any non-
application products as libraries.

Fixes: QTCREATORBUG-23394
Change-Id: I0d122c7b58e12d14d68a1ca7337df83074299cd7
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
2020-06-12 09:14:31 +00:00
Eike Ziller
5b364de168 Use dialogParent() instead of mainWindow()
There are very few reasons to use mainWindow() directly.
Especially for modal dialogs, using dialogParent() is important, since
that guarantees the stacking order in case of other dialogs currently
being open.

Change-Id: I7ad2c23c5034b43195eb35cfe405932a7ea003e6
Reviewed-by: hjk <hjk@qt.io>
2020-06-02 11:44:53 +00:00
Eike Ziller
52b7ec058b Merge remote-tracking branch 'origin/4.12'
Conflicts:
	src/plugins/mcusupport/mcusupportsdk.cpp

Change-Id: I1583fa81adc0218ad4657baa347c08e9e29f88e6
2020-05-15 14:49:11 +02:00
Christian Kandeler
56a4865b2f QbsProjectManager: Fix potential null pointer access
We retrieved the watcher result from the wrong pointer.

Fixes: QTCREATORBUG-23924
Change-Id: I876d8adc0aef011deb3f5827f3e50c43a8d92dfc
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-05-12 10:52:31 +00:00
Eike Ziller
deb0eaf795 Merge remote-tracking branch 'origin/4.12'
Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs
	qtcreator_ide_branding.pri
	src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp

Change-Id: I34c3d1fd5be90537e37d15e00b1a0d455d1bf81d
2020-04-14 09:47:38 +02:00
Christian Kandeler
fb56c82abf QbsProjectManager: Fix one more build key inconsistency
Amends 26e4a2a758.

Fixes: QTCREATORBUG-23841
Change-Id: Ie297f8e2b6a79f6bafa709bf3a0285c9ce6e03ab
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-04-09 14:48:58 +00:00
Eike Ziller
897abf24e2 Merge remote-tracking branch 'origin/4.12'
Change-Id: I79083060dfc3bc4408123acd3b7305b9701650fd
2020-04-03 08:12:52 +02:00
Christian Kandeler
3b740fccc8 QbsProjectManager: Ensure project data update on target switch
... if necessary.

Fixes: QTCREATORBUG-23767
Change-Id: I9a79eebcab348fe0b37d76b31dcbf088d56fc3ca
Reviewed-by: hjk <hjk@qt.io>
2020-04-01 13:51:08 +00:00
Eike Ziller
c8a2ea5433 Merge remote-tracking branch 'origin/4.12'
Conflicts:
	src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp

Change-Id: I2a0ccb84560174c5170d5baaff526c0e095f0ba0
2020-03-19 09:35:50 +01:00
Christian Stenger
4fefbbcb66 QbsPM: Pass enabled information to code model
If a project part is not enabled let the code model know
about it as others may refer to this information as well.
Fixes an issue with the AutoTest plugin when it tries
to run a test for which no build targets will be generated
at all as it is disabled by some condition.

Change-Id: I342e8dde0a171084894ec59fdb462d7e9526c8db
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-03-18 09:28:41 +00:00
Christian Kandeler
c679a3ac72 QbsProjectManager: Make more use of base class infrastructure
No need to duplicate the timer. Now BuildSystem::isWaitingForParse()
returns the correct result.

Change-Id: Iab754b2c488c48302039988bd36e51f00e0f1196
Reviewed-by: hjk <hjk@qt.io>
2020-03-12 11:57:38 +00:00
Eike Ziller
95d41fa23e Merge remote-tracking branch 'origin/4.12'
Conflicts:
	src/plugins/qmldesigner/designmodewidget.cpp

Change-Id: I94a94a15df433d6caa8922fccaa69918b5e4e365
2020-03-11 07:29:47 +01:00
Christian Kandeler
233c438a2d QbsProjectManager: Consider cpp.platformDefines for the code model
Fixes: QTCREATORBUG-19537
Change-Id: Ia51441491913da0f7b31c2ff02e2552ff58147f3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-03-10 08:47:11 +00:00
Eike Ziller
995ba78fae Merge remote-tracking branch 'origin/4.12'
Conflicts:
	src/plugins/cmakeprojectmanager/tealeafreader.cpp
	src/plugins/cmakeprojectmanager/tealeafreader.h
	src/plugins/projectexplorer/miniprojecttargetselector.cpp

Change-Id: I88d85be3903f57a55fddb7901e771a4822db1b85
2020-03-04 08:15:50 +01:00
hjk
b0b50257ec ProjectExplorer: Pass extra project files as QSet
They are available in some cases as such, and consumed as such.

Change-Id: I9866c7d7bd817fb19a8b11a0efbe583ed55fe393
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-03-03 09:17:20 +00:00
Christian Stenger
26e4a2a758 Qbs: Fix build target key of project part
The build target key is the basic mapping of project
part to run configuration and this went out of sync
with the latest refactorings of the Qbs project
manager.
This fixes execution of tests inside the AutoTest
plugin for qbs based projects.

Change-Id: I7d7a703a341df98a015f9c83d3c2a320d46779c3
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-03-02 10:12:32 +00:00
Eike Ziller
61dc14b67f Merge remote-tracking branch 'origin/4.12'
Change-Id: I3e7049da2c3da6f784e3cb3407c22ada556e5d24
2020-02-26 08:35:05 +01:00
Christian Kandeler
61932b5d4b QbsProjectManager: Use the same build key as in previous versions
We changed the build key derivation method in commit 6913947986 under
the assumption that it doesn't really matter as long as it's unique.
However, this value gets serialized, so the change broke restoring
existing qbs run configurations.
As we don't want users to lose all their run configs when upgrading to
4.12, we switch back to the old pattern.

Change-Id: Ia4a353af08cca33dbc3c60bd9fc0e28f42dcfe20
Reviewed-by: hjk <hjk@qt.io>
2020-02-20 15:49:12 +00:00
hjk
6033c31e23 ProjectExplorer: Un-export BuildEnvironmentWidget
Apparently not needed anymore outside.

Change-Id: I9f4f1a65f56a86ba75a37a9b96db71472b3e0af2
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-02-20 12:10:22 +00:00
Christian Kandeler
beed0c7396 CMake/Qbs: Do not emit Project::fileListChanged()
...explicitly.
This is already done as part of Project::setRootProjectNode(), and the
signal is connected to some rather expensive operations.

Task-number: QTCREATORBUG-18533
Change-Id: I96ea2f49c866f2b60f599748c4d5b82c790ed2ca
Reviewed-by: hjk <hjk@qt.io>
2020-02-07 09:39:19 +00:00
Christian Kandeler
a6e6a53e82 QbsProjectManager: Build up the project tree in a dedicated thread
... and only switch the root node in the UI thread.
Creating the project tree can take some time for larger projects; no
need to block the UI for that.

Task-number: QTCREATORBUG-18533
Change-Id: I093dc9fb8f3454011a3c64bcc0f785e8b7753b4e
Reviewed-by: hjk <hjk@qt.io>
2020-02-06 17:00:56 +00:00
Christian Kandeler
cd9571b4f7 CppTools: Optionally move raw project parts creation into thread
... by letting callers pass in a generator function.
This takes some load off the UI thread for larger projects.
For now only used by the QbsProjectManager, which can provide a thread-
safe generator function due to the project data existing in "value"
form.

Task-number: QTCREATORBUG-18533
Change-Id: I525dea36a4c4079bd1bd5a4fff844617547d56f1
Reviewed-by: hjk <hjk@qt.io>
2020-02-06 15:53:46 +00:00
Christian Kandeler
faa56b1965 QbsProjectManager: Fix setting up extra compilers
There were a couple of typos breaking the functionality.
Also separate updating extra compilers and the code model.

Change-Id: Ie8f7bbf62d4b7817af3a26298401ad99c011b6e5
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2020-02-06 09:53:17 +00:00
hjk
0334b6e491 ProjectManager: Add convenience Task subclasses
For Compile, BuildSystem and Deployment. Unclutters user code and reduces
binary size.

Change-Id: Ia18e917bb411754162e9f4ec6056d752a020bb50
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-01-20 10:11:59 +00:00
hjk
e109b731ad Utils: Rename FilePathList to simply FilePaths
The exact storage type does not really matter here.

Change-Id: Iefec40f0f5909c8e7ba3415db4a11962694e1b38
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-12-18 08:43:18 +00:00
Christian Kandeler
f0316dbae9 QbsProjectManager: Do not call qbs config unnecessarily
- We know the name of the profile for a given kit. There is no need to
  call qbs config to retrieve it.
- Do not update a profile upon kit removal.

Change-Id: I1a555233091c69d9ea6daa1e4a11737719c37fdf
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2019-12-06 11:04:43 +00:00
Christian Kandeler
142d4ddb28 QbsProjectManager: Let users provide a default install root
Fixes: QTCREATORBUG-12983
Change-Id: I016d298aaf8abc0d96267115225ab825bdd039e9
Reviewed-by: hjk <hjk@qt.io>
2019-11-22 11:34:19 +00:00
Christian Kandeler
6913947986 QbsProjectManager: Switch to an out-of-process approach
That is, do not link to the qbscore library anymore. Instead, use the
JSON-based API.
Advantages:
    - We can build Qt Creator with qbs support without qbs being present
      on the build machine.
    - Smaller memory footprint for Qt Creator, as the qbs build graphs
      are now being managed by a separate process.
    - Potential crashes in qbs will not kill the Qt Creator process.

Fixes: QTCREATORBUG-20622
Task-number: QTCREATORBUG-22904
Change-Id: If7d344b0ac65a99ff0a3a3db215d61b8d903e47e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2019-11-21 13:32:18 +00:00
hjk
c2127c9ec4 ProjectExplorer: Introduce and use a Target::buildSystemUpdated signal
Change-Id: I497d46866146600a1ed9162bd720c574ee4d4769
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-11-21 13:08:06 +00:00
hjk
738bbf1a87 ProjectExplorer: Introduce per-buildsystem setRootProjectNode
Currently diverting to the original Project::setRootProjectNode.
Idea is to focus on the BuildSystem <-> generated tree relation.

Change-Id: I8b20173e364713f0919cf4f8b76a2f79ef8770bb
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-11-21 07:40:22 +00:00
hjk
95ba85c86e ProjectExplorer: Use a Kit to initialize KitInfo
Change-Id: I70a83ff9a9da814b4e1ad9ce5e0b626105c09ca4
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-11-20 11:31:14 +00:00
hjk
2758682723 ProjectExplorer: Move BuildSystem owership to BuildConfiguration
... or Target.

This patch moves build system from conceptually "one per project"
to "one per target (i.e. per project-and-kit)" or "per
BuildConfigurations" for targets where the builds differ
significantly.

Building requires usually items from the kit (Qt version, compiler,
...) so a target-agnostic build is practically almost always wrong.

Moving the build system to the target also has the potential
to solve issues caused by switching targets while parsing, that
used Project::activeTarget() regularly, with potentially different
results before and after the switch.

This patch might create performance/size regressions when several
targets are set up per project as the build system implementation's
internal data are duplicated in this case.

The idea is to fix that by sharing per-project pieces again in
the project implementation once these problems occur.

Change-Id: I87f640ce418b93175b5029124eaa55f3b8721dca
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-11-19 11:05:52 +00:00
hjk
6a878c7293 ProjectExplorer: Use a functor for BuildSystem creation
... instead of creating the BuildSystem direct. This will help the
shift of BuildSystem owner ship as a Project will have potentially
multiple BuildSystem instances (one per BuildConfiguration), but
still be responsible for creating them with the Targets.

Change-Id: I2dd71c7687ed41af9e42c874b3f932ce704e7ee3
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-10-25 09:01:52 +00:00
hjk
66c7d75dbd Qbs, Qmake, Python, Generic: Introduce BuildSystem derived classes
... and move context menu action handling there.

This is a temporary measure to be able to move that functionality
alongside the actual BuildSystem to the BuildConfiguration.

There is a lot to be cleaned up left, to keep the patch small.

Change-Id: If4b0820a13b376fc97b70785052924972ce22705
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2019-10-25 07:55:10 +00:00
Christian Kandeler
ab355bb157 QbsProjectManager: Fix document filtering
This was broken in 929083e7b6.

Change-Id: I5341a90bf8067d93485a75827309840b5212d2b4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-10-18 12:06:24 +00:00
Christian Kandeler
f5e25c50db QbsProjectManager: Fix build
BuildStepList: :allOfType() was newly used in 4.10 and removed in 4.11.
Change-Id: I3129f4a8aa411547e018c88eec02df58f56285f9
Reviewed-by: hjk <hjk@qt.io>
2019-10-16 15:59:38 +00:00
Eike Ziller
fcb12a275f Merge remote-tracking branch 'origin/4.10' into 4.11
Conflicts:
	cmake/QtCreatorIDEBranding.cmake
	qbs/modules/qtc/qtc.qbs
	qtcreator_ide_branding.pri
	src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
	src/plugins/projectexplorer/deploymentdata.cpp
	src/plugins/projectexplorer/msvctoolchain.cpp

Change-Id: I64c304fc71435629a6a0060a9df71e8952699508
2019-10-16 15:27:22 +02:00
Christian Kandeler
e0ebda45db QbsPM: Fix look-up of executable on Desktop
... if installation at build time is disabled and a dedicated install
step exists.

Fixes: QTCREATORBUG-23039
Change-Id: I7115368bb1993ebdb48200d2a9c55c34a7bdceec
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2019-10-11 08:56:00 +00:00
Eike Ziller
9cc45fe1fb CppTools: Move RawProjectPart to ProjectExplorer
Doesn't have any dependencies into CppTools anymore, therefore moving it
reduces the dependencies of the project managers to CppTools as well.

Change-Id: Ibe728abe59eb88a8877943dca1f48a85163e27ac
Reviewed-by: hjk <hjk@qt.io>
2019-09-11 06:22:12 +00:00
Eike Ziller
8452264a18 CppTools: Move QtVersion and BuildTargetType
QtVersion to utils/cpplanguage_details.h which already contains similar
flags.

BuildTargetType to ProjectExplorer, next to BuildTargetInfo (but not in the
same header to not pull that in everywhere).

Removes dependency on ProjectPart from RawProjectPart.

Change-Id: I5791065e4266f20c2657ee4b1b594df04b238a1c
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-09-10 07:31:21 +00:00
Christian Stenger
6ef98541f7 QbsProjectManager: Fix compile for old gcc
Change-Id: Ic2db2bea982c36a26e54033594d39f7a39c6e6f1
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-09-04 05:05:56 +00:00