Merge remote-tracking branch 'origin/10.0'

Change-Id: Ie591b7130b33a042509e56701384f8ff4d9cb7f8
This commit is contained in:
Eike Ziller
2023-03-16 11:57:01 +01:00
42 changed files with 41567 additions and 40656 deletions

View File

@@ -15,6 +15,8 @@ General
* Added support for temporarily dragging progress details out of the way * Added support for temporarily dragging progress details out of the way
in addition to hiding them with the button below them (QTCREATORBUG-28078) in addition to hiding them with the button below them (QTCREATORBUG-28078)
* Fixed that the locator search term was not preserved when using `Open as
Centered Popup`
Editing Editing
------- -------
@@ -108,6 +110,12 @@ Projects
by default (QTCREATORBUG-28513) by default (QTCREATORBUG-28513)
* Fixed that `Package manager auto setup` created a dependency of the project * Fixed that `Package manager auto setup` created a dependency of the project
build to the Qt Creator installation build to the Qt Creator installation
* Fixed that cloned build configurations could miss values from the `Initial
Parameters` (QTCREATORBUG-28759)
* Fixed that CMake preset macros were not expanded for environment variables
(QTCREATORBUG-28606)
* Fixed a crash with the `Kit Configuration` button for build configurations
(QTCREATORBUG-28740)
### Qbs ### Qbs
@@ -129,9 +137,15 @@ Debugging
* Fixed highlighting in the `Disassembler` view * Fixed highlighting in the `Disassembler` view
* Fixed skipping `std::function` details when stepping * Fixed skipping `std::function` details when stepping
* Fixed an out of memory issue when debugging long lists (QTCREATORBUG-26416) * Fixed an out of memory issue when debugging long lists (QTCREATORBUG-26416)
* Fixed the highlighting of values and members in the memory view
(QTCREATORBUG-23681)
* GDB
* Fixed issues with GDB 13.1
* CDB * CDB
* Fixed the printing of addresses of pointers with multiple base classes * Fixed the printing of addresses of pointers with multiple base classes
(QTCREATORBUG-28337) (QTCREATORBUG-28337)
* Fixed some performance issues (QTCREATORBUG-18287)
* Fixed a freeze with non-UTF-8 system encoding (QTCREATORBUG-25054)
### Python ### Python
@@ -159,9 +173,10 @@ Version Control Systems
### Git ### Git
* Improved tracking of external changes (QTCREATORBUG-21089) * Improved tracking of external changes (QTCREATORBUG-21089)
* Added editor annotation for blame information (instant blame) with a setting * Added editor annotation for blame information (instant blame) with the setting
(opt-out) and an action to show it manually for the current line `Edit > Preferences > Version Control Git > Add instant blame annotations to
(QTCREATORBUG-23299) editor` (opt-out) and the `Tools > Git > Current File > Instant Blame` action
to show annotation manually for the current line (QTCREATORBUG-23299)
Test Integration Test Integration
---------------- ----------------
@@ -169,7 +184,8 @@ Test Integration
* Improved `Run` and `Debug Test Under Cursor` (QTCREATORBUG-28496) * Improved `Run` and `Debug Test Under Cursor` (QTCREATORBUG-28496)
* Improved the number of files that are scanned for tests * Improved the number of files that are scanned for tests
* Improved output handling (QTCREATORBUG-28706) * Improved output handling (QTCREATORBUG-28706)
* Made the expensive checking for tests in derived `TestCase` objects optional * Added an option to enable the expensive checking for tests in derived
`TestCase` objects to `Edit > Preferences > Testing > Qt Test`
Platforms Platforms
--------- ---------
@@ -242,6 +258,7 @@ Philip Van Hoof
Pranta Dastider Pranta Dastider
Robert Löhning Robert Löhning
Sami Shalayel Sami Shalayel
Samuel Gaist
Samuel Ghinet Samuel Ghinet
Sergey Levin Sergey Levin
Sivert Krøvel Sivert Krøvel

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -172,7 +172,7 @@
\c {cmake-format.exe}. \c {cmake-format.exe}.
\li Select \uicontrol {Enable auto format on file save} to automatically \li Select \uicontrol {Enable auto format on file save} to automatically
format CMake files when you save them. format CMake files when you save them.
\li In \uicontrol {Restrict to MIME types}, add the \l{Adding MIME Types} \li In \uicontrol {Restrict to MIME types}, add the \l{Editing MIME Types}
{MIME types} of the files to format, separated by semicolons. The {MIME types} of the files to format, separated by semicolons. The
default value, \c {text/x-cmake} formats CMake files. If the field is default value, \c {text/x-cmake} formats CMake files. If the field is
empty, all files are formatted. empty, all files are formatted.

View File

@@ -83,7 +83,7 @@
directories. directories.
Also, the \uicontrol {Open Terminal} button in the Also, the \uicontrol {Open Terminal} button in the
\uicontrol {Use build environment} section opens a terminal on the device. \uicontrol {Build Environment} section opens a terminal on the device.
\section1 Starting External Processes \section1 Starting External Processes

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2018 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// ********************************************************************** // **********************************************************************
@@ -40,4 +40,22 @@
\uicontrol Uncommit leaves the working tree ready for a new commit. The only \uicontrol Uncommit leaves the working tree ready for a new commit. The only
change it might make is restoring pending merges that were present before change it might make is restoring pending merges that were present before
the commit. the commit.
\section1 Bazaar Preferences
To set Bazaar preferences, select \uicontrol Edit > \uicontrol Preferences >
\uicontrol {Version Control} > \uicontrol Bazaar:
\image qtcreator-preferences-vcs-bazaar.webp {Bazaar preferences}
\list
\li \uicontrol Command specifies the path to the command line client
executable.
\li \uicontrol {Default username} and \uicontrol {Default email}
specify the username and email address to use by default when
committing changes.
\li \uicontrol {Log count} sets the maximum number of lines the log can
have.
\li \uicontrol Timeout sets a timeout for version control operations.
\endlist
*/ */

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2018 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// ********************************************************************** // **********************************************************************
@@ -15,9 +15,8 @@
\title Using ClearCase \title Using ClearCase
IBM Rational ClearCase is a version control, workspace management, parallel IBM Rational ClearCase is a version control, workspace management, parallel
development support, and build automation solution developed by IBM. The development support, and build automation solution developed by IBM. Use the
ClearCase client plugin is available on Linux and Windows for accessing a ClearCase client plugin on Linux and Windows to access a ClearCase server.
ClearCase server.
\section1 Using GNU Diffutils with ClearCase \section1 Using GNU Diffutils with ClearCase
@@ -32,8 +31,10 @@
\li Select \uicontrol Edit > \uicontrol Preferences > \li Select \uicontrol Edit > \uicontrol Preferences >
\uicontrol {Version Control} > \uicontrol ClearCase. \uicontrol {Version Control} > \uicontrol ClearCase.
\image qtcreator-preferences-vcs-clearcase.webp {ClearCase preferences}
\li Select the \uicontrol External radio button. The radio button is \li Select the \uicontrol External radio button. The radio button is
disabled if \c diff is not found in the PATH. disabled if \c diff is not in the PATH.
\li In the \uicontrol Arguments field, specify arguments for running \li In the \uicontrol Arguments field, specify arguments for running
\c diff. \c diff.
@@ -51,12 +52,10 @@
a UCM activity. By default, the activities are automatically assigned names. a UCM activity. By default, the activities are automatically assigned names.
To disable this functionality, select \uicontrol Edit > \uicontrol Preferences To disable this functionality, select \uicontrol Edit > \uicontrol Preferences
> \uicontrol {Version Control} > \uicontrol ClearCase, and then deselect the > \uicontrol {Version Control} > \uicontrol ClearCase, and then deselect the
\uicontrol {Automatically assign activity names} check box. \uicontrol {Auto assign activity names} check box.
To automatically check out files when you edit them, select \uicontrol Edit To automatically check out files when you edit them, select the
> \uicontrol Preferences > \uicontrol {Version Control} > \uicontrol ClearCase, \uicontrol {Automatically check out files on edit} check box.
and then select the \uicontrol {Automatically check out files on edit}
check box.
To cancel the checkout for a file and delete the checked-out version, To cancel the checkout for a file and delete the checked-out version,
select \uicontrol Tools > \uicontrol ClearCase > select \uicontrol Tools > \uicontrol ClearCase >
@@ -68,12 +67,12 @@
To create a permanent new version of the current file or all files in the To create a permanent new version of the current file or all files in the
versioned object base (VOB), select \uicontrol Tools > versioned object base (VOB), select \uicontrol Tools >
\uicontrol {ClearCase} > \uicontrol {Check In}. To be asked to confirm \uicontrol {ClearCase} > \uicontrol {Check In}. To confirm
that you want to check in the files, select \uicontrol Edit > that you want to check in the files, select \uicontrol Edit >
\uicontrol Preferences > \uicontrol {Version Control} > \uicontrol ClearCase, \uicontrol Preferences > \uicontrol {Version Control} > \uicontrol ClearCase,
and then select the \uicontrol {Prompt on check-in} check box. and then select the \uicontrol {Prompt on check-in} check box.
By default, you are asked to enter a comment when checking files out or in. By default, you have to enter a comment when checking files out or in.
To suppress this prompt, select \uicontrol Edit > \uicontrol Preferences > To suppress this prompt, select \uicontrol Edit > \uicontrol Preferences >
\uicontrol {Version Control} > \uicontrol ClearCase, and then select the \uicontrol {Version Control} > \uicontrol ClearCase, and then select the
\uicontrol {Do not prompt for comment during checkout or check-in} check \uicontrol {Do not prompt for comment during checkout or check-in} check
@@ -89,4 +88,8 @@
> \uicontrol {Version Control} > \uicontrol ClearCase, and then select the > \uicontrol {Version Control} > \uicontrol ClearCase, and then select the
\uicontrol {Disable indexer} check box. To only have some VOBs indexed, \uicontrol {Disable indexer} check box. To only have some VOBs indexed,
specify them in the \uicontrol {Index only VOBs} field. specify them in the \uicontrol {Index only VOBs} field.
Specify the number of event records to show in \uicontrol {History count}.
Set a timeout for version control operations in \uicontrol Timeout.
*/ */

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2019 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// ********************************************************************** // **********************************************************************
@@ -29,18 +29,20 @@
To unedit files in the local directory, as well as recursively in all To unedit files in the local directory, as well as recursively in all
subdirectories, select \uicontrol {Unedit Repository}. subdirectories, select \uicontrol {Unedit Repository}.
To specify the CVS root directory, select \uicontrol Edit > \section1 CVS Preferences
\uicontrol Preferences > \uicontrol {Version Control} > \uicontrol CVS, and then
specify the path to the directory in the \uicontrol {CVS root} field.
You can specify settings for viewing diff output in the To set CVS preferences, select \uicontrol Edit > \uicontrol Preferences >
\uicontrol {Diff options} field. \uicontrol {Version Control} > \uicontrol CVS:
By default, you are prompted to confirm that you want to submit changes. \image qtcreator-preferences-vcs-cvs.webp {CVS preferences}
To suppress the prompt, deselect the \uicontrol {Prompt on submit} check
box.
By default, all files that belong to the commit are annotated. To disable \list
this feature, deselect the \uicontrol {Describe all files matching commit \li \uicontrol {CVS Command} specifies the path to the command line
id} check box. client executable.
\li \uicontrol {CVS root} specifies the CVS root.
\li \uicontrol Timeout sets a timeout for version control operations.
\li \uicontrol {Diff options} sets preferences for viewing diff output.
\li \uicontrol {Describe all files matching commit id} annotates all
files that belong to the commit.
\endlist
*/ */

View File

@@ -29,6 +29,9 @@
\li Select \uicontrol Edit > \uicontrol Preferences > \li Select \uicontrol Edit > \uicontrol Preferences >
\uicontrol {Version Control} > \uicontrol Fossil, and set the \uicontrol {Version Control} > \uicontrol Fossil, and set the
designated directory in the \uicontrol {Default path} field. designated directory in the \uicontrol {Default path} field.
\image qtcreator-preferences-vcs-fossil.webp {Fossil preferences}
\endlist \endlist
To create a local Fossil repository, select \uicontrol Tools > To create a local Fossil repository, select \uicontrol Tools >
@@ -62,4 +65,28 @@
\li \uicontrol Settings \li \uicontrol Settings
\li Configure the settings of the local repository. \li Configure the settings of the local repository.
\endtable \endtable
\section1 Fossil Preferences
To set Fossil preferences, select \uicontrol Edit > \uicontrol Preferences >
\uicontrol {Version Control} > \uicontrol Fossil:
\list
\li \uicontrol Command specifies the path to the command line client
executable.
\li \uicontrol {Default path} sets the path to the directory to store
local repositories by default.
\li \uicontrol {Default user} specifies an existing user who becomes the
author of changes made to the repository.
\li \uicontrol {SSL/TLS identity} sets the SSL/TLS client identity key
to use for authentication if the server requests it.
\li \uicontrol {Log count} sets the maximum number of lines the log can
have.
\li \uicontrol {Log width} sets the width of log entry lines to 20 or
above. The value 0 shows a single line per entry.
\li \uicontrol {Timeout} sets a timeout for version control operations.
\li \uicontrol {Disable auto sync} disables automatic pull before
a commit or update and automatic push after a commit or tag or branch
creation.
\endlist
*/ */

View File

@@ -42,4 +42,23 @@
\li \uicontrol{Push} \li \uicontrol{Push}
\li Push changes to the remote repository. \li Push changes to the remote repository.
\endtable \endtable
\section1 Mercurial Preferences
To set preferences for Mercurial, select \uicontrol Edit >
\uicontrol Preferences > \uicontrol {Version Control} > \uicontrol Mercurial:
\image qtcreator-preferences-vcs-mercurial.webp {Mercurial preferences}
\list
\li \uicontrol Command specifies the path to the command line client
executable.
\li \uicontrol {Default username} and \uicontrol {Default email}
specify the username and email address to use by default when
committing changes.
\li \uicontrol {Log count} sets the maximum number of lines the log can
have.
\li \uicontrol Timeout sets a timeout for version control operations.
\endlist
*/ */

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2018 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*! /*!
@@ -8,21 +8,14 @@
\section1 Setting Up Version Control Systems \section1 Setting Up Version Control Systems
\QC uses the version control system's command line clients to access your \QC uses the version control system's command line clients to access your
repositories. To allow access, make sure that the command line clients can repositories. Make sure that the command line clients are in the \c{PATH}
be located using the \c{PATH} environment variable. Alternatively, specify environment variable, or specify the path to the command line client
the path to the command line client executable in the \uicontrol Command executable in the version control system specific tab in \uicontrol Edit >
field in the version control system specific tab in \uicontrol Edit >
\uicontrol Preferences > \uicontrol {Version Control}. \uicontrol Preferences > \uicontrol {Version Control}.
If authentication is required to access the repository, enter the user \image qtcreator-preferences-vcs-bazaar.webp {Bazaar preferences}
credentials in the \uicontrol Username and \uicontrol Password fields.
Enter a timeout for version control operations in the \uicontrol Timeout
field.
For some version control systems, you can specify the maximum number of
lines the log can have in the \uicontrol {Log count} field.
The other configuration options depend on the version control system.
After you set up the version control system, use the command line to check After you set up the version control system, use the command line to check
that everything works (for example, use the status command). If no issues that everything works (for example, use the status command). If no issues
arise, you should be ready to use the system also from \QC. arise, you should be ready to use the system also from \QC.
@@ -35,12 +28,14 @@
Select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Version Control} Select \uicontrol Edit > \uicontrol Preferences > \uicontrol {Version Control}
> \uicontrol General to specify settings for submit messages: > \uicontrol General to specify settings for submit messages:
\image qtcreator-preferences-vcs-general.webp {General tab in Version Control preferences}
\list \list
\li \uicontrol{Wrap submit messages at} limits the line length of a \li \uicontrol{Wrap submit messages at} limits the line length of a
submit message to the specified number of characters. submit message to the specified number of characters.
\li \uicontrol{Submit message check script} is a script or program that \li \uicontrol{Submit message check script} is a script or program that
can be used to perform checks on the submit message before performs checks on the submit message before
submitting. The submit message is passed in as the script's first submitting. The submit message is the script's first
parameter. If there is an error, the script should output a parameter. If there is an error, the script should output a
message on standard error and return a non-zero exit code. message on standard error and return a non-zero exit code.
\li \uicontrol{User/alias configuration file} is a text file that lists \li \uicontrol{User/alias configuration file} is a text file that lists
@@ -73,7 +68,7 @@
For example, \c ssh-askpass or \c x11-ssh-askpass, depending on the For example, \c ssh-askpass or \c x11-ssh-askpass, depending on the
ssh-askpass implementation that you use. ssh-askpass implementation that you use.
\li \uicontrol {Reset VCS Cache} resets the version control system \li \uicontrol {Reset VCS Cache} resets the version control system
configuration to a state known to \QC after it has been changed configuration to a state known to \QC after you change it
from the command line, for example. from the command line, for example.
\endlist \endlist

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2020 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// ********************************************************************** // **********************************************************************
@@ -29,9 +29,18 @@
\section1 Configuring Perforce \section1 Configuring Perforce
In the Perforce preferences, you can specify workspace details: To set Perforce preferences, select \uicontrol Edit > \uicontrol Preferences
\uicontrol {P4 user}, \uicontrol {P4 client}, and \uicontrol {P4 port}. To > \uicontrol {Version Control} > \uicontrol Perforce:
specify the details individually for several projects, use configuration
\image qtcreator-preferences-vcs-perforce.webp {Perforce preferences}
In \uicontrol {P4 command}, set the path to the command line client
executable.
Set workspace details in \uicontrol {P4 user}, \uicontrol {P4 client}, and
\uicontrol {P4 port}.
To specify the details individually for several projects, use configuration
files instead. Create a \c {p4config.txt} configuration file for each files instead. Create a \c {p4config.txt} configuration file for each
project in the top level project directory, and run project in the top level project directory, and run
\c{p4 set P4CONFIG=p4config.txt} once. You must deselect the \c{p4 set P4CONFIG=p4config.txt} once. You must deselect the
@@ -56,9 +65,4 @@
To view information about change lists and the files in them, select To view information about change lists and the files in them, select
\uicontrol Tools > \uicontrol Perforce > \uicontrol Describe. \uicontrol Tools > \uicontrol Perforce > \uicontrol Describe.
By default, you must confirm that you want to submit changes. To suppress
the confirmation prompt, select \uicontrol Edit > \uicontrol Preferences >
\uicontrol {Version Control} > \uicontrol Perforce, and then deselect the
\uicontrol {Prompt on submit} check box.
*/ */

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2019 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// ********************************************************************** // **********************************************************************
@@ -21,14 +21,27 @@
\uicontrol Subversion > \uicontrol Describe to display commit log messages \uicontrol Subversion > \uicontrol Describe to display commit log messages
for a revision. for a revision.
By default, you must confirm that you want to submit changes. To suppress the
confirmation prompt, select \uicontrol Edit > \uicontrol Preferences >
\uicontrol {Version Control} > \uicontrol Subversion, and then deselect the
\uicontrol {Prompt on submit} check box.
To show whitespace changes in annotation views, deselect the
\uicontrol {Ignore whitespace changes in annotation} check box.
You can use Git as a client for a Subversion server. For more information, You can use Git as a client for a Subversion server. For more information,
see \l{Using Git with Subversion}. see \l{Using Git with Subversion}.
\section1 Subversion Preferences
To set Subversion preferences, select \uicontrol Edit >
\uicontrol Preferences > \uicontrol {Version Control} >
\uicontrol Subversion:
\image qtcreator-preferences-vcs-subversion.webp {Subversion preferences}
\list
\li \uicontrol {Subversion command} specifies the path to the command
line client executable.
\li \uicontrol {Username} and \uicontrol {Password} specify the user
credentials to access the repository if the server requires
\uicontrol Authentication.
\li \uicontrol {Log count} sets the maximum number of lines the log can
have.
\li \uicontrol Timeout sets a timeout for version control operations.
\li \uicontrol {Ignore whitespace changes in annotation} hides whitespace
changes in annotation views.
\endlist
*/ */

View File

@@ -1,4 +1,4 @@
// Copyright (C) 2022 The Qt Company Ltd. // Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
// ********************************************************************** // **********************************************************************
@@ -46,6 +46,8 @@
set to \c %HOMEDRIVE%%HOMEPATH% when the Git executable is run and set to \c %HOMEDRIVE%%HOMEPATH% when the Git executable is run and
authorization works as it would with \c {git bash}. authorization works as it would with \c {git bash}.
\image qtcreator-preferences-vcs-git.webp {Git preferences}
\section1 Working with the Current File \section1 Working with the Current File
To work with the current file, select the commands in \uicontrol Tools > To work with the current file, select the commands in \uicontrol Tools >
@@ -73,9 +75,15 @@
To display the versioning history of a file, select \uicontrol{Log of}. To display the versioning history of a file, select \uicontrol{Log of}.
The log output has the date, the commit message, and a commit The log output has the date, the commit message, and a commit
identifier. Click on the commit identifier to view commit details. identifier.
\image qtcreator-git-log.png "Commit details in Git log" You can set the maximum number of log entries to show in \uicontrol Edit >
\uicontrol Preferences > \uicontrol {Version Control} > \uicontrol Git >
\uicontrol {Log count}.
Click on the commit identifier to view commit details.
\image qtcreator-git-log.png {Commit details in Git log}
Right-clicking on a commit identifier brings up a context menu that lets Right-clicking on a commit identifier brings up a context menu that lets
you apply actions on the commit, such as view annotations or cherry-pick you apply actions on the commit, such as view annotations or cherry-pick
@@ -109,7 +117,7 @@
\uicontrol {Git Show} view, select \uicontrol {Describe Change} in the \uicontrol {Git Show} view, select \uicontrol {Describe Change} in the
context menu. context menu.
\image qtcreator-vcs-show.png "Commit description in Git show" \image qtcreator-vcs-show.png {Commit description in Git show}
\section2 Viewing Annotations \section2 Viewing Annotations
@@ -117,7 +125,14 @@
view displays the lines of the file prepended by the commit identifier they view displays the lines of the file prepended by the commit identifier they
originate from. originate from.
\image qtcreator-git-blame.webp "Git Blame view" \image qtcreator-git-blame.webp {Git Blame view}
By default, each line is annotated in the editor when you scroll through
the file. To disable this feature, select \uicontrol Edit >
\uicontrol Preferences > \uicontrol {Version Control} > \uicontrol Git, and
deselect \uicontrol {Add instant blame annotations to editor}. To view
annotations for the current line, select \uicontrol Tools > \uicontrol Git >
\uicontrol {Current File} > \uicontrol {Instant Blame}.
Click the commit identifier to show a detailed description of the change. Click the commit identifier to show a detailed description of the change.
@@ -197,7 +212,7 @@
commit page containing a text editor where you can enter your commit commit page containing a text editor where you can enter your commit
message and a checkable list of modified files to include. message and a checkable list of modified files to include.
\image qtcreator-vcs-commit.png "Committing changes with Git" \image qtcreator-vcs-commit.png {Committing changes with Git}
\uicontrol {General Information} displays the names of the \uicontrol {General Information} displays the names of the
repository and branch for the commit. repository and branch for the commit.
@@ -234,7 +249,7 @@
\uicontrol Git > \uicontrol {Local Repository} > \uicontrol Git > \uicontrol {Local Repository} >
\uicontrol {Amend Last Commit}. \uicontrol {Amend Last Commit}.
\image qtcreator-git-amend.png "Amending a Git commit" \image qtcreator-git-amend.png {Amending a Git commit}
To view the commit in its current form, before amending, select To view the commit in its current form, before amending, select
\uicontrol {Show HEAD}. \uicontrol {Show HEAD}.
@@ -279,7 +294,7 @@
\uicontrol {Git Branches} sidebar view shows the checked out \uicontrol {Git Branches} sidebar view shows the checked out
branch in bold and underlined in the list of branches. branch in bold and underlined in the list of branches.
\image qtcreator-vcs-gitbranch.png "Git Branches sidebar view" \image qtcreator-vcs-gitbranch.png {Git Branches sidebar view}
Old entries and tags are filtered out of the list of branches Old entries and tags are filtered out of the list of branches
by default. To include them, select \inlineimage icons/filtericon.png by default. To include them, select \inlineimage icons/filtericon.png
@@ -424,7 +439,7 @@
commits, select \uicontrol Tools > \uicontrol Git > commits, select \uicontrol Tools > \uicontrol Git >
\uicontrol {Actions on Commits}. \uicontrol {Actions on Commits}.
\image creator-git-commit-actions.png "Select a Git Commit dialog" \image creator-git-commit-actions.png {Select a Git Commit dialog}
You can apply the following actions on commits: You can apply the following actions on commits:
@@ -565,7 +580,7 @@
Select the \uicontrol HTTPS check box to prepend \c https to the Gerrit URL Select the \uicontrol HTTPS check box to prepend \c https to the Gerrit URL
if Gerrit does not add it. if Gerrit does not add it.
\image qtcreator-gerrit-options.png "Gerrit preferences" \image qtcreator-preferences-vcs-gerrit.webp {Gerrit preferences}
\section1 Working with Git Tools \section1 Working with Git Tools

File diff suppressed because it is too large Load Diff

View File

@@ -326,7 +326,7 @@ void doSemanticHighlighting(
styles.mainStyle = C_PARAMETER; styles.mainStyle = C_PARAMETER;
} else if (token.type == "macro") { } else if (token.type == "macro") {
styles.mainStyle = C_MACRO; styles.mainStyle = C_MACRO;
} else if (token.type == "type") { } else if (token.type == "type" || token.type == "concept") {
styles.mainStyle = C_TYPE; styles.mainStyle = C_TYPE;
} else if (token.type == "modifier") { } else if (token.type == "modifier") {
styles.mainStyle = C_KEYWORD; styles.mainStyle = C_KEYWORD;

View File

@@ -1300,6 +1300,9 @@ void ClangdTestHighlighting::test_data()
<< QList<int>{C_FIELD} << 0; << QList<int>{C_FIELD} << 0;
QTest::newRow("fake operator method call") << 1050 << 8 << 1050 << 22 QTest::newRow("fake operator method call") << 1050 << 8 << 1050 << 22
<< QList<int>{C_FUNCTION} << 0; << QList<int>{C_FUNCTION} << 0;
QTest::newRow("concept definition") << 1053 << 30 << 1053 << 42
<< QList<int>{C_TYPE, C_DECLARATION} << 0;
QTest::newRow("concept use") << 1054 << 29 << 1054 << 41 << QList<int>{C_TYPE} << 0;
} }
void ClangdTestHighlighting::test() void ClangdTestHighlighting::test()

View File

@@ -1049,3 +1049,6 @@ void useStrangeStruct(StructWithMisleadingMemberNames *s) {
s->operatormember = 5; s->operatormember = 5;
s->operatorMethod(); s->operatorMethod();
} }
template<typename T> concept NoConstraint = true;
static void constrainedFunc(NoConstraint auto t) {}

View File

@@ -1,4 +1,5 @@
TEMPLATE = app TEMPLATE = app
CONFIG -= qt CONFIG -= qt
CONFIG += c++2a
SOURCES = highlighting.cpp SOURCES = highlighting.cpp
QMAKE_CXXFLAGS += -broken QMAKE_CXXFLAGS += -broken

View File

@@ -165,24 +165,23 @@ void ClangToolRunWorker::start()
.arg(toolName, projectFile.toUserOutput(), m_diagnosticConfig.displayName()), .arg(toolName, projectFile.toUserOutput(), m_diagnosticConfig.displayName()),
Utils::NormalMessageFormat); Utils::NormalMessageFormat);
// Collect files const ClangToolType tool = m_tool == ClangTidyTool::instance() ? ClangToolType::Tidy
const auto [includeDir, clangVersion] : ClangToolType::Clazy;
= getClangIncludeDirAndVersion(runControl()->commandLine().executable()); const FilePath executable = toolExecutable(tool);
const auto [includeDir, clangVersion] = getClangIncludeDirAndVersion(executable);
// Collect files
AnalyzeUnits unitsToProcess; AnalyzeUnits unitsToProcess;
for (const FileInfo &fileInfo : m_fileInfos) for (const FileInfo &fileInfo : m_fileInfos)
unitsToProcess.append({fileInfo, includeDir, clangVersion}); unitsToProcess.append({fileInfo, includeDir, clangVersion});
qCDebug(LOG) << Q_FUNC_INFO << runControl()->commandLine().executable() qCDebug(LOG) << Q_FUNC_INFO << executable << includeDir << clangVersion;
<< includeDir << clangVersion;
qCDebug(LOG) << "Files to process:" << unitsToProcess; qCDebug(LOG) << "Files to process:" << unitsToProcess;
qCDebug(LOG) << "Environment:" << m_environment; qCDebug(LOG) << "Environment:" << m_environment;
m_filesAnalyzed.clear(); m_filesAnalyzed.clear();
m_filesNotAnalyzed.clear(); m_filesNotAnalyzed.clear();
const ClangToolType tool = m_tool == ClangTidyTool::instance() ? ClangToolType::Tidy
: ClangToolType::Clazy;
using namespace Tasking; using namespace Tasking;
QList<TaskItem> tasks{ParallelLimit(qMax(1, m_runSettings.parallelJobs()))}; QList<TaskItem> tasks{ParallelLimit(qMax(1, m_runSettings.parallelJobs()))};
for (const AnalyzeUnit &unit : std::as_const(unitsToProcess)) { for (const AnalyzeUnit &unit : std::as_const(unitsToProcess)) {

View File

@@ -225,6 +225,7 @@ static QPair<FilePath, QString> clangIncludeDirAndVersion(const FilePath &clangT
QPair<FilePath, QString> getClangIncludeDirAndVersion(const FilePath &clangToolPath) QPair<FilePath, QString> getClangIncludeDirAndVersion(const FilePath &clangToolPath)
{ {
QTC_CHECK(!clangToolPath.isEmpty());
static QMap<FilePath, QPair<FilePath, QString>> cache; static QMap<FilePath, QPair<FilePath, QString>> cache;
auto it = cache.find(clangToolPath); auto it = cache.find(clangToolPath);
if (it == cache.end()) if (it == cache.end())

View File

@@ -665,12 +665,15 @@ void CMakeBuildSettingsWidget::kitCMakeConfiguration()
auto layout = new QGridLayout(dialog); auto layout = new QGridLayout(dialog);
kitAspect.createConfigWidget(m_buildSystem->kit()) KitAspectWidget *widget = kitAspect.createConfigWidget(m_buildSystem->kit());
->addToLayoutWithLabel(layout->parentWidget()); widget->setParent(dialog);
generatorAspect.createConfigWidget(m_buildSystem->kit()) widget->addToLayoutWithLabel(layout->parentWidget());
->addToLayoutWithLabel(layout->parentWidget()); widget = generatorAspect.createConfigWidget(m_buildSystem->kit());
configurationKitAspect.createConfigWidget(m_buildSystem->kit()) widget->setParent(dialog);
->addToLayoutWithLabel(layout->parentWidget()); widget->addToLayoutWithLabel(layout->parentWidget());
widget = configurationKitAspect.createConfigWidget(m_buildSystem->kit());
widget->setParent(dialog);
widget->addToLayoutWithLabel(layout->parentWidget());
layout->setColumnStretch(1, 1); layout->setColumnStretch(1, 1);
@@ -1175,6 +1178,12 @@ static void addCMakeConfigurePresetToInitialArguments(QStringList &initialArgume
initialArguments.removeIf( initialArguments.removeIf(
[presetArgument](const QString &item) { return item == presetArgument; }); [presetArgument](const QString &item) { return item == presetArgument; });
// Remove the -DQTC_KIT_DEFAULT_CONFIG_HASH argument
const QString presetHashArgument
= CMakeConfigurationKitAspect::kitDefaultConfigHashItem(k).toArgument();
initialArguments.removeIf(
[presetHashArgument](const QString &item) { return item == presetHashArgument; });
PresetsDetails::ConfigurePreset configurePreset PresetsDetails::ConfigurePreset configurePreset
= Utils::findOrDefault(project->presetsData().configurePresets, = Utils::findOrDefault(project->presetsData().configurePresets,
[presetName](const PresetsDetails::ConfigurePreset &preset) { [presetName](const PresetsDetails::ConfigurePreset &preset) {

View File

@@ -209,12 +209,51 @@ void CMakeProject::readPresets()
return data; return data;
}; };
std::function<void(Internal::PresetsData & presetData, Utils::FilePaths & inclueStack)>
resolveIncludes = [&](Internal::PresetsData &presetData, Utils::FilePaths &includeStack) {
if (presetData.include) {
for (const QString &path : presetData.include.value()) {
Utils::FilePath includePath = Utils::FilePath::fromUserInput(path);
if (!includePath.isAbsolutePath())
includePath = presetData.fileDir.resolvePath(path);
Internal::PresetsData includeData = parsePreset(includePath);
if (includeData.include) {
if (includeStack.contains(includePath)) {
TaskHub::addTask(BuildSystemTask(
Task::TaskType::Warning,
Tr::tr("Attempt to include %1 which was already parsed.")
.arg(includePath.path()),
Utils::FilePath(),
-1));
TaskHub::requestPopup();
} else {
resolveIncludes(includeData, includeStack);
}
}
presetData.configurePresets = includeData.configurePresets
+ presetData.configurePresets;
presetData.buildPresets = includeData.buildPresets + presetData.buildPresets;
includeStack << includePath;
}
}
};
const Utils::FilePath cmakePresetsJson = projectDirectory().pathAppended("CMakePresets.json"); const Utils::FilePath cmakePresetsJson = projectDirectory().pathAppended("CMakePresets.json");
const Utils::FilePath cmakeUserPresetsJson = projectDirectory().pathAppended("CMakeUserPresets.json"); const Utils::FilePath cmakeUserPresetsJson = projectDirectory().pathAppended("CMakeUserPresets.json");
Internal::PresetsData cmakePresetsData = parsePreset(cmakePresetsJson); Internal::PresetsData cmakePresetsData = parsePreset(cmakePresetsJson);
Internal::PresetsData cmakeUserPresetsData = parsePreset(cmakeUserPresetsJson); Internal::PresetsData cmakeUserPresetsData = parsePreset(cmakeUserPresetsJson);
// resolve the include
Utils::FilePaths includeStack = {cmakePresetsJson};
resolveIncludes(cmakePresetsData, includeStack);
includeStack = {cmakeUserPresetsJson};
resolveIncludes(cmakeUserPresetsData, includeStack);
m_presetsData = combinePresets(cmakePresetsData, cmakeUserPresetsData); m_presetsData = combinePresets(cmakePresetsData, cmakeUserPresetsData);
setupBuildPresets(m_presetsData); setupBuildPresets(m_presetsData);
} }

View File

@@ -710,7 +710,10 @@ QList<void *> CMakeProjectImporter::examineDirectory(const FilePath &importPath,
data->cmakePresetDefaultConfigHash data->cmakePresetDefaultConfigHash
= CMakeConfigurationKitAspect::computeDefaultConfigHash(config, data->cmakeBinary); = CMakeConfigurationKitAspect::computeDefaultConfigHash(config, data->cmakeBinary);
QByteArrayList buildConfigurationTypes = {cache.valueOf("CMAKE_BUILD_TYPE")}; QString cmakeBuildType = QString::fromUtf8(cache.valueOf("CMAKE_BUILD_TYPE"));
CMakePresets::Macros::expand(configurePreset, env, projectDirectory(), cmakeBuildType);
QByteArrayList buildConfigurationTypes = {cmakeBuildType.toUtf8()};
if (buildConfigurationTypes.front().isEmpty()) { if (buildConfigurationTypes.front().isEmpty()) {
buildConfigurationTypes.clear(); buildConfigurationTypes.clear();
QByteArray buildConfigurationTypesString = cache.valueOf("CMAKE_CONFIGURATION_TYPES"); QByteArray buildConfigurationTypesString = cache.valueOf("CMAKE_CONFIGURATION_TYPES");

View File

@@ -7,6 +7,7 @@
#include <utils/environment.h> #include <utils/environment.h>
#include <utils/filepath.h> #include <utils/filepath.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/osspecificaspects.h>
using namespace Utils; using namespace Utils;
@@ -40,10 +41,13 @@ static void expandAllButEnv(const PresetsDetails::ConfigurePreset &preset,
value.replace("${sourceDirName}", sourceDirectory.fileName()); value.replace("${sourceDirName}", sourceDirectory.fileName());
value.replace("${presetName}", preset.name); value.replace("${presetName}", preset.name);
value.replace("${fileDir}", preset.fileDir.path());
if (preset.generator) if (preset.generator)
value.replace("${generator}", preset.generator.value()); value.replace("${generator}", preset.generator.value());
value.replace("${hostSystemName}", getHostSystemName(sourceDirectory.osType())); value.replace("${hostSystemName}", getHostSystemName(sourceDirectory.osType()));
value.replace("${pathListSep}",
Utils::OsSpecificAspects::pathListSeparator(sourceDirectory.osType()));
} }
static void expandAllButEnv(const PresetsDetails::BuildPreset &preset, static void expandAllButEnv(const PresetsDetails::BuildPreset &preset,
@@ -53,10 +57,13 @@ static void expandAllButEnv(const PresetsDetails::BuildPreset &preset,
value.replace("${dollar}", "$"); value.replace("${dollar}", "$");
value.replace("${sourceDir}", sourceDirectory.toString()); value.replace("${sourceDir}", sourceDirectory.toString());
value.replace("${fileDir}", preset.fileDir.path());
value.replace("${sourceParentDir}", sourceDirectory.parentDir().toString()); value.replace("${sourceParentDir}", sourceDirectory.parentDir().toString());
value.replace("${sourceDirName}", sourceDirectory.fileName()); value.replace("${sourceDirName}", sourceDirectory.fileName());
value.replace("${presetName}", preset.name); value.replace("${presetName}", preset.name);
value.replace("${pathListSep}",
Utils::OsSpecificAspects::pathListSeparator(sourceDirectory.osType()));
} }
static QString expandMacroEnv(const QString &macroPrefix, static QString expandMacroEnv(const QString &macroPrefix,

View File

@@ -36,6 +36,22 @@ bool parseCMakeMinimumRequired(const QJsonValue &jsonValue, QVersionNumber &vers
return true; return true;
} }
std::optional<QStringList> parseInclude(const QJsonValue &jsonValue)
{
std::optional<QStringList> includes;
if (!jsonValue.isUndefined()) {
if (jsonValue.isArray()) {
includes = QStringList();
const QJsonArray includeArray = jsonValue.toArray();
for (const QJsonValue &includeValue : includeArray)
includes.value() << includeValue.toString();
}
}
return includes;
}
std::optional<PresetsDetails::Condition> parseCondition(const QJsonValue &jsonValue) std::optional<PresetsDetails::Condition> parseCondition(const QJsonValue &jsonValue)
{ {
std::optional<PresetsDetails::Condition> condition; std::optional<PresetsDetails::Condition> condition;
@@ -133,7 +149,8 @@ std::optional<PresetsDetails::Condition> parseCondition(const QJsonValue &jsonVa
} }
bool parseConfigurePresets(const QJsonValue &jsonValue, bool parseConfigurePresets(const QJsonValue &jsonValue,
QList<PresetsDetails::ConfigurePreset> &configurePresets) QList<PresetsDetails::ConfigurePreset> &configurePresets,
const Utils::FilePath &fileDir)
{ {
// The whole section is optional // The whole section is optional
if (jsonValue.isUndefined()) if (jsonValue.isUndefined())
@@ -151,6 +168,7 @@ bool parseConfigurePresets(const QJsonValue &jsonValue,
PresetsDetails::ConfigurePreset preset; PresetsDetails::ConfigurePreset preset;
preset.name = object.value("name").toString(); preset.name = object.value("name").toString();
preset.fileDir = fileDir;
preset.hidden = object.value("hidden").toBool(); preset.hidden = object.value("hidden").toBool();
QJsonValue inherits = object.value("inherits"); QJsonValue inherits = object.value("inherits");
@@ -291,7 +309,8 @@ bool parseConfigurePresets(const QJsonValue &jsonValue,
} }
bool parseBuildPresets(const QJsonValue &jsonValue, bool parseBuildPresets(const QJsonValue &jsonValue,
QList<PresetsDetails::BuildPreset> &buildPresets) QList<PresetsDetails::BuildPreset> &buildPresets,
const Utils::FilePath &fileDir)
{ {
// The whole section is optional // The whole section is optional
if (jsonValue.isUndefined()) if (jsonValue.isUndefined())
@@ -309,6 +328,7 @@ bool parseBuildPresets(const QJsonValue &jsonValue,
PresetsDetails::BuildPreset preset; PresetsDetails::BuildPreset preset;
preset.name = object.value("name").toString(); preset.name = object.value("name").toString();
preset.fileDir = fileDir;
preset.hidden = object.value("hidden").toBool(); preset.hidden = object.value("hidden").toBool();
QJsonValue inherits = object.value("inherits"); QJsonValue inherits = object.value("inherits");
@@ -416,6 +436,8 @@ bool PresetsParser::parse(const Utils::FilePath &jsonFile, QString &errorMessage
QJsonObject root = jsonDoc.object(); QJsonObject root = jsonDoc.object();
m_presetsData.fileDir = jsonFile.parentDir();
if (!parseVersion(root.value("version"), m_presetsData.version)) { if (!parseVersion(root.value("version"), m_presetsData.version)) {
errorMessage = Tr::tr("Invalid \"version\" in file \"%1\".").arg(jsonFile.fileName()); errorMessage = Tr::tr("Invalid \"version\" in file \"%1\".").arg(jsonFile.fileName());
return false; return false;
@@ -426,14 +448,21 @@ bool PresetsParser::parse(const Utils::FilePath &jsonFile, QString &errorMessage
m_presetsData.cmakeMinimimRequired); m_presetsData.cmakeMinimimRequired);
// optional // optional
if (!parseConfigurePresets(root.value("configurePresets"), m_presetsData.configurePresets)) { m_presetsData.include = parseInclude(root.value("include"));
// optional
if (!parseConfigurePresets(root.value("configurePresets"),
m_presetsData.configurePresets,
jsonFile.parentDir())) {
errorMessage errorMessage
= Tr::tr("Invalid \"configurePresets\" section in %1 file").arg(jsonFile.fileName()); = Tr::tr("Invalid \"configurePresets\" section in %1 file").arg(jsonFile.fileName());
return false; return false;
} }
// optional // optional
if (!parseBuildPresets(root.value("buildPresets"), m_presetsData.buildPresets)) { if (!parseBuildPresets(root.value("buildPresets"),
m_presetsData.buildPresets,
jsonFile.parentDir())) {
errorMessage errorMessage
= Tr::tr("Invalid \"buildPresets\" section in %1 file").arg(jsonFile.fileName()); = Tr::tr("Invalid \"buildPresets\" section in %1 file").arg(jsonFile.fileName());
return false; return false;

View File

@@ -90,6 +90,7 @@ public:
void inheritFrom(const ConfigurePreset &other); void inheritFrom(const ConfigurePreset &other);
QString name; QString name;
Utils::FilePath fileDir;
std::optional<bool> hidden = false; std::optional<bool> hidden = false;
std::optional<QStringList> inherits; std::optional<QStringList> inherits;
std::optional<Condition> condition; std::optional<Condition> condition;
@@ -115,6 +116,7 @@ public:
void inheritFrom(const BuildPreset &other); void inheritFrom(const BuildPreset &other);
QString name; QString name;
Utils::FilePath fileDir;
std::optional<bool> hidden = false; std::optional<bool> hidden = false;
std::optional<QStringList> inherits; std::optional<QStringList> inherits;
std::optional<Condition> condition; std::optional<Condition> condition;
@@ -140,6 +142,8 @@ public:
int version = 0; int version = 0;
QVersionNumber cmakeMinimimRequired; QVersionNumber cmakeMinimimRequired;
QHash<QString, QString> vendor; QHash<QString, QString> vendor;
std::optional<QStringList> include;
Utils::FilePath fileDir;
QList<PresetsDetails::ConfigurePreset> configurePresets; QList<PresetsDetails::ConfigurePreset> configurePresets;
QList<PresetsDetails::BuildPreset> buildPresets; QList<PresetsDetails::BuildPreset> buildPresets;
}; };

View File

@@ -3941,10 +3941,10 @@ void GdbEngine::handleGdbStarted()
} }
if (!rp.sysRoot.isEmpty()) { if (!rp.sysRoot.isEmpty()) {
runCommand({"set sysroot " + rp.sysRoot.toString()}); runCommand({"set sysroot " + rp.sysRoot.path()});
// sysroot is not enough to correctly locate the sources, so explicitly // sysroot is not enough to correctly locate the sources, so explicitly
// relocate the most likely place for the debug source // relocate the most likely place for the debug source
runCommand({"set substitute-path /usr/src " + rp.sysRoot.toString() + "/usr/src"}); runCommand({"set substitute-path /usr/src " + rp.sysRoot.path() + "/usr/src"});
} }
//QByteArray ba = QFileInfo(sp.dumperLibrary).path().toLocal8Bit(); //QByteArray ba = QFileInfo(sp.dumperLibrary).path().toLocal8Bit();
@@ -4139,7 +4139,7 @@ void GdbEngine::handleDebugInfoLocation(const DebuggerResponse &response)
const FilePath debugInfoLocation = runParameters().debugInfoLocation; const FilePath debugInfoLocation = runParameters().debugInfoLocation;
if (!debugInfoLocation.isEmpty() && debugInfoLocation.exists()) { if (!debugInfoLocation.isEmpty() && debugInfoLocation.exists()) {
const QString curDebugInfoLocations = response.consoleStreamOutput.split('"').value(1); const QString curDebugInfoLocations = response.consoleStreamOutput.split('"').value(1);
QString cmd = "set debug-file-directory " + debugInfoLocation.toString(); QString cmd = "set debug-file-directory " + debugInfoLocation.path();
if (!curDebugInfoLocations.isEmpty()) if (!curDebugInfoLocations.isEmpty())
cmd += HostOsInfo::pathListSeparator() + curDebugInfoLocations; cmd += HostOsInfo::pathListSeparator() + curDebugInfoLocations;
runCommand({cmd}); runCommand({cmd});
@@ -4799,7 +4799,7 @@ void GdbEngine::handleTargetExtendedRemote(const DebuggerResponse &response)
runCommand({"attach " + QString::number(runParameters().attachPID.pid()), runCommand({"attach " + QString::number(runParameters().attachPID.pid()),
CB(handleTargetExtendedAttach)}); CB(handleTargetExtendedAttach)});
} else if (!runParameters().inferior.command.isEmpty()) { } else if (!runParameters().inferior.command.isEmpty()) {
runCommand({"-gdb-set remote exec-file " + runParameters().inferior.command.executable().toString(), runCommand({"-gdb-set remote exec-file " + runParameters().inferior.command.executable().path(),
CB(handleTargetExtendedAttach)}); CB(handleTargetExtendedAttach)});
} else { } else {
const QString title = Tr::tr("No Remote Executable or Process ID Specified"); const QString title = Tr::tr("No Remote Executable or Process ID Specified");

View File

@@ -53,9 +53,9 @@ McuPackage::McuPackage(const SettingsHandler::Ptr &settingsHandler,
, m_addToSystemPath(addToSystemPath) , m_addToSystemPath(addToSystemPath)
, m_valueType(valueType) , m_valueType(valueType)
{ {
m_path = FilePath::fromUserInput(qtcEnvironmentVariable(m_environmentVariableName)); m_path = this->settingsHandler->getPath(settingsKey, QSettings::UserScope, m_defaultPath);
if (!m_path.exists()) { if (m_path.isEmpty()) {
m_path = this->settingsHandler->getPath(settingsKey, QSettings::UserScope, m_defaultPath); m_path = FilePath::fromUserInput(qtcEnvironmentVariable(m_environmentVariableName));
} }
} }

View File

@@ -1,92 +1,14 @@
{ {
"version": 3, "version": 4,
"cmakeMinimumRequired": { "cmakeMinimumRequired": {
"major": 3, "major": 3,
"minor": 21, "minor": 23,
"patch": 0 "patch": 0
}, },
"include": [
"mingw.json", "msvc.json"
],
"configurePresets": [ "configurePresets": [
{
"name": "mingw",
"displayName": "MinGW 11.2.0",
"generator": "Ninja",
"installDir": "../inst-${presetName}",
"cacheVariables": {
"CMAKE_PREFIX_PATH": "$env{SYSTEMDRIVE}/Qt/6.4.2/mingw_64"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"environment": {
"PATH": "$env{SYSTEMDRIVE}/Qt/Tools/mingw1120_64/bin;$penv{PATH}"
},
"debug" : {
"find" : true
}
},
{
"name": "mingw-make",
"binaryDir": "${sourceDir}/build-${presetName}-release",
"displayName": "MinGW 11.2.0 Makefiles",
"generator": "MinGW Makefiles",
"inherits" : "mingw",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_PREFIX_PATH": "$env{SystemDrive}/Qt/6.4.2/mingw_64"
}
},
{
"name": "visualc",
"displayName": "Visual C++ 2019 x64",
"generator": "Visual Studio 16 2019",
"binaryDir": "${sourceDir}/build-${presetName}",
"architecture" : {
"value": "x64"
},
"toolchainFile" : "../cmakepresets/msvc-toolchain.cmake",
"condition" : {
"type": "not",
"condition": {
"type": "notEquals",
"lhs": "${hostSystemName}",
"rhs": "$env{HOST_SYSTEM_NAME}"
}
},
"environment" : {
"HOST_SYSTEM_NAME": "Windows",
"QT_VERSION": "6.4.2"
}
},
{
"name": "visualc-ninja",
"displayName": "Visual C++ 2019 x64 Ninja",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build-${presetName}",
"toolchainFile" : "c:/Qt/6.4.2/msvc2019_64/lib/cmake/Qt6/qt.toolchain.cmake",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"environment" : {
"VCToolsVersion": "14.29.30133",
"WindowsSDKVersion" : "10.0.22000.0",
"VCArch": "x64",
"VCToolsInstallDir": "$env{ProgramFiles(x86)}/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/$env{VCToolsVersion}",
"WindowsSdkDir" : "$env{ProgramFiles(x86)}/Windows Kits/10",
"WindowsSdkIncVerDir": "$env{WindowsSdkDir}/Include/$env{WindowsSDKVersion}",
"WindowsSdkLibVerDir": "$env{WindowsSdkDir}/Lib/$env{WindowsSDKVersion}",
"INCLUDE": "$env{VCToolsInstallDir}/ATLMFC/include;$env{VCToolsInstallDir}/include;$env{WindowsSdkIncVerDir}/ucrt;$env{WindowsSdkIncVerDir}/shared;$env{WindowsSdkIncVerDir}/um;$env{WindowsSdkIncVerDir}/winrt;$env{WindowsSdkIncVerDir}/cppwinrt",
"LIB": "$env{VCToolsInstallDir}/ATLMFC/lib/$env{VCArch};$env{VCToolsInstallDir}/lib/$env{VCArch};$env{WindowsSdkLibVerDir}/ucrt/$env{VCArch};$env{WindowsSdkLibVerDir}/um/$env{VCArch}",
"PATH": "$env{VCToolsInstallDir}/bin/HostX64/$env{VCArch};$env{WindowsSdkDir}/bin/$env{WindowsSDKVersion}/$env{VCArch};$penv{PATH}"
}
},
{ {
"name": "linux-gcc", "name": "linux-gcc",
"displayName": "Linux GCC", "displayName": "Linux GCC",
@@ -99,39 +21,5 @@
"rhs": "Linux" "rhs": "Linux"
} }
} }
],
"buildPresets": [
{
"name": "mingw",
"displayName": "MinGW default",
"configurePreset": "mingw",
"targets": "${sourceDirName}"
},
{
"name": "mingw-verbose",
"inherits": "mingw",
"displayName": "MinGW verbose",
"verbose": true
},
{
"name": "mingw-make",
"displayName": "MinGW make 4 CPUs",
"configurePreset": "mingw-make",
"jobs": 4
},
{
"name": "visualc-debug",
"configurePreset": "visualc",
"configuration": "Debug"
},
{
"name": "visualc-relwithdebinfo",
"inherits": "visualc-debug",
"configuration": "RelWithDebInfo"
},
{
"name": "visualc-ninja",
"configurePreset": "visualc-ninja"
}
] ]
} }

View File

@@ -0,0 +1,61 @@
{
"version": 4,
"cmakeMinimumRequired": {
"major": 3,
"minor": 23,
"patch": 0
},
"configurePresets": [
{
"name": "mingw",
"displayName": "MinGW 11.2.0",
"generator": "Ninja",
"installDir": "../inst-${presetName}",
"cacheVariables": {
"CMAKE_PREFIX_PATH": "$env{SYSTEMDRIVE}/Qt/6.4.2/mingw_64"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"environment": {
"PATH": "$env{SYSTEMDRIVE}/Qt/Tools/mingw1120_64/bin;$penv{PATH}"
},
"debug" : {
"find" : true
}
},
{
"name": "mingw-make",
"binaryDir": "${sourceDir}/build-${presetName}-release",
"displayName": "MinGW 11.2.0 Makefiles",
"generator": "MinGW Makefiles",
"inherits" : "mingw",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_PREFIX_PATH": "$env{SystemDrive}/Qt/6.4.2/mingw_64"
}
}
],
"buildPresets": [
{
"name": "mingw",
"displayName": "MinGW default",
"configurePreset": "mingw",
"targets": "${sourceDirName}"
},
{
"name": "mingw-verbose",
"inherits": "mingw",
"displayName": "MinGW verbose",
"verbose": true
},
{
"name": "mingw-make",
"displayName": "MinGW make 4 CPUs",
"configurePreset": "mingw-make",
"jobs": 4
}
]
}

View File

@@ -0,0 +1,76 @@
{
"version": 4,
"cmakeMinimumRequired": {
"major": 3,
"minor": 23,
"patch": 0
},
"configurePresets": [
{
"name": "visualc",
"displayName": "Visual C++ 2019 x64",
"generator": "Visual Studio 16 2019",
"binaryDir": "${sourceDir}/build-${presetName}",
"architecture" : {
"value": "x64"
},
"toolchainFile" : "../cmakepresets/msvc-toolchain.cmake",
"condition" : {
"type": "not",
"condition": {
"type": "notEquals",
"lhs": "${hostSystemName}",
"rhs": "$env{HOST_SYSTEM_NAME}"
}
},
"environment" : {
"HOST_SYSTEM_NAME": "Windows",
"QT_VERSION": "6.4.2"
}
},
{
"name": "visualc-ninja",
"displayName": "Visual C++ 2019 x64 Ninja",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build-${presetName}",
"toolchainFile" : "c:/Qt/6.4.2/msvc2019_64/lib/cmake/Qt6/qt.toolchain.cmake",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"environment" : {
"VCToolsVersion": "14.29.30133",
"WindowsSDKVersion" : "10.0.22000.0",
"VCArch": "x64",
"VCToolsInstallDir": "$env{ProgramFiles(x86)}/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/$env{VCToolsVersion}",
"WindowsSdkDir" : "$env{ProgramFiles(x86)}/Windows Kits/10",
"WindowsSdkIncVerDir": "$env{WindowsSdkDir}/Include/$env{WindowsSDKVersion}",
"WindowsSdkLibVerDir": "$env{WindowsSdkDir}/Lib/$env{WindowsSDKVersion}",
"INCLUDE": "$env{VCToolsInstallDir}/ATLMFC/include;$env{VCToolsInstallDir}/include;$env{WindowsSdkIncVerDir}/ucrt;$env{WindowsSdkIncVerDir}/shared;$env{WindowsSdkIncVerDir}/um;$env{WindowsSdkIncVerDir}/winrt;$env{WindowsSdkIncVerDir}/cppwinrt",
"LIB": "$env{VCToolsInstallDir}/ATLMFC/lib/$env{VCArch};$env{VCToolsInstallDir}/lib/$env{VCArch};$env{WindowsSdkLibVerDir}/ucrt/$env{VCArch};$env{WindowsSdkLibVerDir}/um/$env{VCArch}",
"PATH": "$env{VCToolsInstallDir}/bin/HostX64/$env{VCArch};$env{WindowsSdkDir}/bin/$env{WindowsSDKVersion}/$env{VCArch};$penv{PATH}"
}
}
],
"buildPresets": [
{
"name": "visualc-debug",
"configurePreset": "visualc",
"configuration": "Debug"
},
{
"name": "visualc-relwithdebinfo",
"inherits": "visualc-debug",
"configuration": "RelWithDebInfo"
},
{
"name": "visualc-ninja",
"configurePreset": "visualc-ninja"
}
]
}

View File

@@ -2172,7 +2172,7 @@ namespace plugin {
void testPlugin() void testPlugin()
{ {
QString dir = QDir::currentPath(); QString dir = QApplication::applicationDirPath();
#ifdef Q_OS_LINUX #ifdef Q_OS_LINUX
QLibrary lib(dir + "/libsimple_test_plugin.so"); QLibrary lib(dir + "/libsimple_test_plugin.so");
#endif #endif