diff --git a/dist/changelog/changes-15.0.0.md b/dist/changelog/changes-15.0.0.md index 558ef3cc63f..6ee3af39094 100644 --- a/dist/changelog/changes-15.0.0.md +++ b/dist/changelog/changes-15.0.0.md @@ -21,18 +21,18 @@ General ([Blog Post](https://www.qt.io/blog/review-new-themes-for-qt-creator)) * Added `Tools > Scripting > New Script` for creating Lua based Qt Creator scripts - ([Documentation](https://doc-snapshots.qt.io/qtcreator-15.0/creator-how-to-create-lua-scripts.html)) + ([Documentation](https://doc.qt.io/qtcreator/creator-how-to-create-lua-scripts.html)) * Plugins * Added `DocumentationUrl` and new mandatory fields `Id` and `VendorId` to the plugin meta data * Changed the plugin descriptions to Markdown in `Help > About Plugins > Details` and `Extensions` mode * Extended the API available to Lua plugins - ([Documentation](https://doc-snapshots.qt.io/qtcreator-extending/lua-extensions.html)) + ([Documentation](https://doc.qt.io/qtcreator-extending/lua-extensions.html)) * Prebuilt binaries * Added opt-in crash reporting to `Edit > Preferences > Environment > System` - ([Documentation](https://doc-snapshots.qt.io/qtcreator-15.0/creator-how-to-turn-on-crash-reports.html)) + ([Documentation](https://doc.qt.io/qtcreator/creator-how-to-turn-on-crash-reports.html)) Editing ------- @@ -157,6 +157,7 @@ Projects ([QTCREATORBUG-31141](https://bugreports.qt.io/browse/QTCREATORBUG-31141)) * Fixed a focus issue when renaming files ([QTCREATORBUG-30926](https://bugreports.qt.io/browse/QTCREATORBUG-30926)) +* Fixed that the `default` session could be renamed and deleted ### CMake @@ -183,6 +184,10 @@ Projects * Added the option of opening `CMakeCache.txt` to open the project ([QTCREATORBUG-24439](https://bugreports.qt.io/browse/QTCREATORBUG-24439), [QTCREATORBUG-30507](https://bugreports.qt.io/browse/QTCREATORBUG-30507)) +* Made `conanfile.py` and `vcpkg.json` visible in the project tree when used + ([QTCREATORBUG-32041](https://bugreports.qt.io/browse/QTCREATORBUG-32041), + [Conan Package Manager](https://doc.qt.io/qtcreator/creator-project-conan.html), + [vcpkg Package Manager](https://doc.qt.io/qtcreator/creator-vcpkg.html)) * Fixed the option `Build Only the Application to Be Run` for the `Build before deploying` preferences ([QTCREATORBUG-31416](https://bugreports.qt.io/browse/QTCREATORBUG-31416)) @@ -245,6 +250,12 @@ Analyzer * Added column sorting to the list of issues * Added a `Reload` button +Terminal +-------- + +* Fixed the flushing of output after a process terminates + ([QTCREATORBUG-30733](https://bugreports.qt.io/browse/QTCREATORBUG-30733)) + Version Control Systems ----------------------- @@ -256,8 +267,10 @@ Version Control Systems * Added actions for blame at the revision, blame of the parent, the file from the revision, and the log for the line to the tooltip for `Instant Blame` - ([Documentation](https://doc-snapshots.qt.io/qtcreator-15.0/creator-vcs-git.html#using-instant-blame)) + ([Documentation](https://doc.qt.io/qtcreator/creator-vcs-git.html#using-instant-blame)) * Added visual indications that files are modified to the `Projects` view + (when you select + `Preferences > Version Control > General > Show VCS file status`) ([QTCREATORBUG-8857](https://bugreports.qt.io/browse/QTCREATORBUG-8857)) * Added the option to include all local branches in the log * Gerrit @@ -269,6 +282,9 @@ Test Integration * Added test duration information for test frameworks that support it ([QTCREATORBUG-31242](https://bugreports.qt.io/browse/QTCREATORBUG-31242)) +* Added support for running auto tests on Android for Qt 6.8.1 and later +* Fixed the execution of tests with multiple test classes + ([QTCREATORBUG-31935](https://bugreports.qt.io/browse/QTCREATORBUG-31935)) Extension Manager ----------------- @@ -317,7 +333,7 @@ Platforms ### VxWorks * Added support for VxWorks 24.03 - ([Documentation](https://doc-snapshots.qt.io/qtcreator-15.0/creator-how-to-create-vxworks-kits.html)) + ([Documentation](https://doc.qt.io/qtcreator/creator-how-to-create-vxworks-kits.html)) Credits for these changes go to: -------------------------------- diff --git a/doc/qtcreator/images/creator-compilers-custom.png b/doc/qtcreator/images/creator-compilers-custom.png deleted file mode 100644 index d090b832593..00000000000 Binary files a/doc/qtcreator/images/creator-compilers-custom.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-preferences-compilers-clang-cl.webp b/doc/qtcreator/images/qtcreator-preferences-compilers-clang-cl.webp index c02517d1b21..f77fd47e0fc 100644 Binary files a/doc/qtcreator/images/qtcreator-preferences-compilers-clang-cl.webp and b/doc/qtcreator/images/qtcreator-preferences-compilers-clang-cl.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-compilers-clang.webp b/doc/qtcreator/images/qtcreator-preferences-compilers-clang.webp index 68e3252355e..94745a8309a 100644 Binary files a/doc/qtcreator/images/qtcreator-preferences-compilers-clang.webp and b/doc/qtcreator/images/qtcreator-preferences-compilers-clang.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-compilers-custom.webp b/doc/qtcreator/images/qtcreator-preferences-compilers-custom.webp new file mode 100644 index 00000000000..fc1c2b437c1 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-preferences-compilers-custom.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-compilers-qcc.webp b/doc/qtcreator/images/qtcreator-preferences-compilers-qcc.webp index 7d39d268a92..44b6e22e4a7 100644 Binary files a/doc/qtcreator/images/qtcreator-preferences-compilers-qcc.webp and b/doc/qtcreator/images/qtcreator-preferences-compilers-qcc.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-compilers.webp b/doc/qtcreator/images/qtcreator-preferences-compilers.webp index 3a31ea611c1..25052e42ee4 100644 Binary files a/doc/qtcreator/images/qtcreator-preferences-compilers.webp and b/doc/qtcreator/images/qtcreator-preferences-compilers.webp differ diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc index 524163a2894..5d680fef4d3 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc @@ -165,8 +165,14 @@ \section2 Add or remove CMake tools To add a path to a CMake executable that \QC does not detect automatically, - and to specify settings for it, select \uicontrol Add. To make changes to - automatically detected installations, select \uicontrol Clone. + and to specify settings for it, select \uicontrol Add. + + To add a CMake executable on a remote Linux device or in Docker, select + \uicontrol Remote in the dropdown menu in \uicontrol Browse + (\uicontrol Choose on \macos) in the \uicontrol Path field. + + To make changes to automatically detected installations, select + \uicontrol Clone. To remove the selected CMake executable from the list, select \uicontrol Remove. @@ -186,7 +192,8 @@ \image qtcreator-kits-cmake.png {Kits preferences} - \sa {Build with CMake}{How To: Build with CMake}, + \sa {Build applications on remote Linux devices}, {Build on Docker devices}, + {Build with CMake}{How To: Build with CMake}, {Manage Kits}{How To: Manage Kits}, {CMake}, {Kits} */ diff --git a/doc/qtcreator/src/debugger/creator-debug-views.qdoc b/doc/qtcreator/src/debugger/creator-debug-views.qdoc index ad8d948c753..fa73b33784d 100644 --- a/doc/qtcreator/src/debugger/creator-debug-views.qdoc +++ b/doc/qtcreator/src/debugger/creator-debug-views.qdoc @@ -462,15 +462,19 @@ \brief Compute values of arithmetic expressions or function calls. - To compute values of arithmetic expressions or function calls, use + To access global data that is not visible in the + \l {Local Variables and Function Parameters}{Locals} view or to compute + values of arithmetic expressions or function calls, use expression evaluators in the \uicontrol Expressions view. - You can examine static variables that the debuggers don't pick up as - \e {local variables}. For example, if you define + For example, if you define \c {static int staticVar = 42;} in a source file and then add \c staticVar as an evaluated expression, you should see \e 42 in the view when the debugger stops in the source file. + You can also use Expression Evaluators as shortcuts to items that are + nested deeply in the locals tree. + \image qtcreator-debugger-expressions.webp {Expressions view} \section1 Adding Expression Evaluators @@ -481,8 +485,8 @@ You can also: \list - \li Double-click in the \uicontrol {Expressions} or - \l {Local Variables and Function Parameters}{Locals} view. + \li Double-click in the \uicontrol {Expressions} or \uicontrol {Locals} + view. \li Select \uicontrol {Add New Expression Evaluator} from the context menu. \endlist @@ -502,21 +506,12 @@ The set of evaluated expressions is saved in your session. - \note Expression evaluators are powerful, but slow down debugger operation - significantly. Use them sparingly and remove them when you no longer need - them. - Expression evaluators are re-evaluated whenever the current frame changes. The functions used in the expressions are called each time, even if they have side-effects. - \if defined(qtcreator) - \section1 Expressions View Actions - - Right-click the \uicontrol Expressions view to select the following actions: - - \include creator-debug-views.qdoc 0 - \endif + \note Evaluating expressions is slow, so remove expression evaluators after + use. \section1 JavaScript Expressions @@ -526,27 +521,46 @@ \section1 C and C++ Expressions - GDB, LLDB and CDB support the evaluation of simple C and C++ expressions. + CDB, GDB, and LLDB support the evaluation of simple C and C++ expressions, + such as arithmetic expressions made of simple values and pointers. + + Depending on the backend and concrete location, some function calls + can be evaluated. CDB is the most limited backend in this respect. + + \section2 Function Calls + Functions can be called only if they are actually compiled into the debugged executable or a library used by the executable. Inlined functions such as most \c{operator[]} implementations of standard containers are typically \e{not} available. + \note When an expression has a function call, anything can happen, including + corruption of the application's state, or using the application's permission + to perform arbitrary actions. + + \section2 Ranged Syntax + When using GDB or LLDB as backend, you can use a special ranged syntax to display multiple values with one expression. A sub-expression of form \c{foo[a..b]} is split into a sequence of individually evaluated expressions \c{foo[a], ..., foo[b]}. + \section2 Compound Variables + You can expand compound variables of struct or class type to show their members. As you also see the variable value and type, you can examine and traverse the low-level layout of object data. + \section2 Optimized Builds + GDB and LLDB, and therefore \QC's debugger, also work for optimized builds on Linux and \macos. Optimization can lead to re-ordering of instructions or removal of some local variables, causing the \uicontrol {Locals} and \uicontrol {Expressions} views to show unexpected data. + \section2 GCC + The debug information from GCC does not include enough information about the time when a variable is initialized. Therefore, \QC can not tell whether the contents of a local @@ -555,6 +569,12 @@ \uicontrol {not in scope}. Not all uninitialized objects, however, can be recognized as such. + \section1 Expressions View Actions + + Right-click the \uicontrol Expressions view to select the following actions: + + \include creator-debug-views.qdoc 0 + \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger} \endif */ diff --git a/doc/qtcreator/src/docker/creator-docker.qdoc b/doc/qtcreator/src/docker/creator-docker.qdoc index 90a44e67b10..95d7427236b 100644 --- a/doc/qtcreator/src/docker/creator-docker.qdoc +++ b/doc/qtcreator/src/docker/creator-docker.qdoc @@ -199,3 +199,22 @@ \sa {Enable and disable plugins}, {Docker}{How To: Develop for Docker}, {Manage Kits}{How To: Manage Kits} */ + +/*! + \page creator-how-to-build-on-docker.html + \previouspage creator-how-tos.html + + \ingroup creator-how-to-docker + + \title Build on Docker devices + + In addition to building applications \e {for} Docker, you can use the + toolchain in Docker to build the applications \e {in} Docker. + + \note Enable the Docker plugin to use it. + + \include linux-mobile/creator-how-to-build-on-remote-devices.qdocinc {build on remote devices} {Docker device} + + \sa {Add CMake tools}, {Enable and disable plugins}, + {Docker}{How To: Develop for Docker}, {Manage Kits}{How To: Manage Kits} +*/ diff --git a/doc/qtcreator/src/linux-mobile/creator-how-to-build-on-remote-devices.qdocinc b/doc/qtcreator/src/linux-mobile/creator-how-to-build-on-remote-devices.qdocinc new file mode 100644 index 00000000000..7e3df7a988b --- /dev/null +++ b/doc/qtcreator/src/linux-mobile/creator-how-to-build-on-remote-devices.qdocinc @@ -0,0 +1,60 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +//! [build on remote devices] + + To build applications on a \1: + + \list 1 + + \li Go to \preferences > \uicontrol Devices > \uicontrol Devices, and + then select \uicontrol Add to add a \1. + + \li Go to \uicontrol {Preferences} > \uicontrol CMake > + \uicontrol Tools, and then select \uicontrol Add. + + \li In \uicontrol Path, select \uicontrol Remote in the dropdown + menu in \uicontrol Browse (\uicontrol Choose on \macos) to + add the path to the CMake executable on the \1. + + \li Go to \uicontrol {Preferences} > \uicontrol Kits > + \uicontrol {Qt Versions}, and then press \key Shift and click the + \uicontrol Add button to add the Qt version on the \1. + + \li Go to \uicontrol {Preferences} > \uicontrol Kits > + \uicontrol Compilers, and then select the compiler + type in \uicontrol Add. + + \li In \uicontrol {C compiler path}, select \uicontrol Remote in the + dropdown menu in \uicontrol Browse (\uicontrol Choose on \macos) to + add the path to the compiler on the \1. + + \li Go to \uicontrol {Preferences} > \uicontrol Kits + to add a kit for building on the device. + + \li Select the device, CMake tool, Qt version, and compiler that you + added above. + + \li In \uicontrol {Run device type} and \uicontrol {Build device}, select + \uicontrol {\1}. + + \li To specify build settings: + + \list 1 + + \li Open a project for an application you want to develop for the + device. + + \li Select \uicontrol Projects > \uicontrol {Build & Run} to activate + the kit that you specified above. + + \endlist + + \li Select \uicontrol Run to specify run settings. Usually, you can use + the default settings. + + When you run the project, \QC deploys the application as specified by + the deploy steps. + + \endlist +//! [build on remote devices] diff --git a/doc/qtcreator/src/linux-mobile/linuxdev.qdoc b/doc/qtcreator/src/linux-mobile/linuxdev.qdoc index 311b68a48b8..d92e9a82441 100644 --- a/doc/qtcreator/src/linux-mobile/linuxdev.qdoc +++ b/doc/qtcreator/src/linux-mobile/linuxdev.qdoc @@ -75,16 +75,18 @@ \li Select \uicontrol Add to add the Qt version for embedded Linux. - \li Go to \preferences > \uicontrol Kits > \uicontrol Compilers. + \li Go to \uicontrol {Preferences} > \uicontrol Kits > + \uicontrol Compilers. \li Select \uicontrol Add to add the compiler for building the applications. - \li Go to \preferences > \uicontrol Devices > \uicontrol Devices. + \li Go to \uicontrol {Preferences} > \uicontrol Devices > + \uicontrol Devices. \li Select \uicontrol Add to add a remote Linux device. - \li Go to \preferences > \uicontrol Kits. + \li Go to \uicontrol {Preferences} > \uicontrol Kits. \li Select \uicontrol Add to add a kit for building for the device. @@ -150,56 +152,9 @@ In addition to building applications \e {for} a generic Linux device, you can use the toolchain on the device to build the applications \e {on} the device. - To build applications on a remote Linux device: - - \list 1 - - \li Go to \preferences > \uicontrol Devices > \uicontrol Devices, and - then select \uicontrol Add to add a remote Linux device. - - \li Go to \preferences > \uicontrol CMake > \uicontrol {CMake Tools}, and - then select \uicontrol Add to add the path to the CMake executable - on the remote Linux device. - - \li Go to \preferences > \uicontrol Kits > \uicontrol {Qt Versions}, - and then select \uicontrol Add to add the Qt version on the remote - Linux device - - \li Go to \preferences > \uicontrol Kits > \uicontrol Compilers, and - then select \uicontrol Add to add the the compiler on the remote - Linux device. - - \li Go to \preferences > \uicontrol Kits, and then select \uicontrol Add - to add a kit for building for the device. - - \li Select the device, CMake tool, Qt version, and compiler that you - added above. - - \li In \uicontrol {Run device type} and \uicontrol {Build device}, select - \uicontrol {Remote Linux Device}. - - \li To specify build settings: - - \list 1 - - \li Open a project for an application you want to develop for the - device. - - \li Select \uicontrol Projects > \uicontrol {Build & Run} to activate - the kit that you specified above. - - \endlist - - \li Select \uicontrol Run to specify run settings. Usually, you can use - the default settings. - - When you run the project, \QC deploys the application as specified by - the deploy steps. - - \endlist + \include creator-how-to-build-on-remote-devices.qdocinc {build on remote devices} {remote Linux device} \sa {Add CMake tools}, {Remote Linux}{How To: Develop for remote Linux}, {Manage Kits}{How To: Manage Kits}, {Developing for Remote Linux Devices}, {Remote Linux Deploy Configuration}, {Remote Linux Run Settings} */ - diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc index f5d96cf5f2f..a7f459aec30 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-compilers.qdoc @@ -217,10 +217,16 @@ \li In \uicontrol {C compiler path}, enter the path to the directory where the C compiler is located. - \li In \uicontrol {C++ compiler path}, enter the path - to the directory where the C++ compiler is located. Select - \uicontrol {Derive from C compiler} to derive the C++ compiler - name from the C compiler name. + Select \uicontrol Remote in the dropdown menu in \uicontrol Browse + (\uicontrol Choose on \macos) to add the path to the compiler on a + remote Linux device or in Docker. + + \li In \uicontrol {C++ compiler path}, select + \uicontrol {Provide manually} to enter the path + to the directory where the C++ compiler is located. + + Select \uicontrol Remote to add the path to the compiler on a + remote Linux device or in Docker. \li In \uicontrol Initialization, select the \c {vcvarsall.bat} file for setting up the command @@ -274,20 +280,30 @@ \uicontrol Custom option. Specify the paths to the directories where the compiler and make tool are located and set preferences for the compiler. - \image creator-compilers-custom.png + \image qtcreator-preferences-compilers-custom.webp {Compilers in Kit Preferences} To add other compilers: \list 1 \li Select \preferences > \uicontrol Kits > - \uicontrol Compilers > \uicontrol Add > \uicontrol Custom > - \uicontrol C or \uicontrol C++. + \uicontrol Compilers > \uicontrol Add > \uicontrol Custom. \li In \uicontrol Name, enter a name for the compiler. - \li In \uicontrol {Compiler path}, enter the path to the directory - where the compiler is located. + \li In \uicontrol {C compiler path}, enter the path to the + directory where the C compiler is located. + + Select \uicontrol Remote in the dropdown menu in \uicontrol Browse + (\uicontrol Choose on \macos) to add the path to the compiler on a + remote Linux device or in Docker. + + \li In \uicontrol {C++ compiler path}, select + \uicontrol {Provide manually} to enter the path + to the directory where the C++ compiler is located. + + Select \uicontrol Remote to add the path to the compiler on a + remote Linux device or in Docker. \li In \uicontrol {Make path}, enter the path to the directory where the make tool is located. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-qt-versions.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-qt-versions.qdoc index a535c12b304..1e01dbad8aa 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-qt-versions.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-qt-versions.qdoc @@ -71,6 +71,9 @@ \li Select \preferences > \uicontrol Kits > \uicontrol {Qt Versions} > \uicontrol Add. + To add a Qt version on a remote Linux device or in Docker, + press \key Shift and click \uicontrol Add. + \li Select the qmake executable for the Qt version to add. \li Select the Qt version to view and edit it. diff --git a/scripts/common.py b/scripts/common.py index e343a46dad1..1b9edd780a8 100644 --- a/scripts/common.py +++ b/scripts/common.py @@ -154,19 +154,34 @@ def extract_file(archive: Path, target: Path) -> None: async def download(url: str, target: Path) -> None: - print('- Starting download {} -> {}'.format(url, str(target))) + print((''' +- Starting download {} + -> {}''').strip().format(url, str(target))) # Since urlretrieve does blocking I/O it would prevent parallel downloads. # Run in default thread pool. + temp_target = target.with_suffix(target.suffix + '-part') loop = asyncio.get_running_loop() - await loop.run_in_executor(None, urllib.request.urlretrieve, url, str(target)) + await loop.run_in_executor(None, urllib.request.urlretrieve, url, str(temp_target)) + temp_target.rename(target) print('+ finished downloading {}'.format(str(target))) -def download_and_extract(urls: list[str], target: Path, temp: Path) -> None: - download_and_extract_tuples([(url, target) for url in urls], temp) +def download_and_extract( + urls: list[str], + target: Path, + temp: Path, + skip_existing: bool = False +) -> None: + download_and_extract_tuples([(url, target) for url in urls], + temp, + skip_existing) -def download_and_extract_tuples(urls_and_targets: list[tuple[str, Path]], temp: Path) -> None: +def download_and_extract_tuples( + urls_and_targets: list[tuple[str, Path]], + temp: Path, + skip_existing: bool = False +) -> None: temp.mkdir(parents=True, exist_ok=True) target_tuples : list[tuple[Path, Path]] = [] # TODO make this work with file URLs, which then aren't downloaded @@ -178,7 +193,10 @@ def download_and_extract_tuples(urls_and_targets: list[tuple[str, Path]], temp: filename = Path(u.path).name target_file = temp / filename target_tuples.append((target_file, target_path)) - tasks.append(asyncio.create_task(download(url, target_file))) + if skip_existing and target_file.exists(): + print('Skipping download of {}'.format(url)) + else: + tasks.append(asyncio.create_task(download(url, target_file))) for task in tasks: await task asyncio.run(impl()) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index ffd48af5f95..3a38de5ea1a 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -966,7 +966,10 @@ class DumperBase(): children = [('error', error)] self.putSpecialValue("notcallable", children=children) else: - self.putItem(result) + if result is None: + self.putSpecialValue("notcallable") + else: + self.putItem(result) def call(self, rettype, value, func, *args): return self.callHelper(rettype, value, func, args) diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index e1a6ae64d63..fec4ee84b3d 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -737,11 +737,11 @@ class Dumper(DumperBase): return None if val is None else self.fromNativeValue(val) def nativeParseAndEvaluate(self, exp): + # FIXME: This breaks symbol discovery + if not self.allowInferiorCalls: + return None #self.warn('EVALUATE "%s"' % exp) try: - if not self.allowInferiorCalls: - return None - val = gdb.parse_and_eval(exp) return val except RuntimeError as error: @@ -1041,6 +1041,10 @@ class Dumper(DumperBase): except: return 0 + def symbolAddress(self, symbolName): + res = self.findSymbol(symbolName) + return res + def handleNewObjectFile(self, objfile): name = objfile.filename if self.isWindowsTarget(): diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index d19da8e6e69..c4312a7d412 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -24586,11 +24586,11 @@ Flags: %3 Invalid location for %1. - + Ungültiger Pfad für %1. Could not create "%1": %2 - Konnte "%1" nicht erzeugen: %2 + Konnte "%1" nicht erstellen: %2 @@ -27373,7 +27373,7 @@ Sie werden möglicherweise gebeten, den Inhalt dieses Logs mitzuteilen, wenn Sie Load Last Core File - + Letzte Core-Datei laden Start and Break on Main @@ -27514,11 +27514,11 @@ Sie werden möglicherweise gebeten, den Inhalt dieses Logs mitzuteilen, wenn Sie coredumpctl did not find any cores created by systemd-coredump. - + coredumpctl hat keine von systemd-coredump erstellten Core-Dateien gefunden. Last Core file "%1" - + Letzte Core-Datei "%1" Reload debugging helpers skipped as no engine is running. @@ -28292,11 +28292,11 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve Show warnings for unsupported breakpoints - + Warnungen für nicht unterstützte Haltepunkte anzeigen Shows a warning on debugger start-up when breakpoints are requested which are not supported by the selected debugger engine. - + Zeigt beim Start des Debuggers eine Warnung an, wenn Haltepunkte angefordert werden, die nicht von der gewählten Debugger-Engine unterstützt werden. Behavior @@ -28304,15 +28304,15 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve User Interface - Benutzeroberfläche + Benutzeroberfläche When Debugging Stops - + Wenn das Debuggen beendet wird Allow inferior calls in debugging helper - + Aufrufe von der Ausgabe-Hilfsbibliothek in den zu debuggenden Prozess erlauben Extra Debugging Helpers @@ -29224,11 +29224,11 @@ Das Setzen von Haltepunkten anhand von Dateinamen und Zeilennummern könnte fehl Invalid debugger command - + Ungültiges Debugger-Kommando Invalid working directory - + Ungültiges Arbeitsverzeichnis Type of Debugger Backend @@ -30015,7 +30015,7 @@ Versuchen Sie, das Projekt neu zu erstellen. Failed starting Docker container. Exit code: %1, output: %2 - + Docker-Container konnte nicht gestartet werden. Rückgabewert: %1, Ausgabe: %2 Docker Image "%1" (%2) @@ -30123,11 +30123,11 @@ Versuchen Sie, das Projekt neu zu erstellen. Failed to inspect image: %1 - + Untersuchung des Images fehlgeschlagen: %1 Could not parse image inspect output: %1 - + Die Ausgabe von image inspect konnte nicht ausgewertet werden: %1 localSource: No mount point found for %1 @@ -30361,7 +30361,7 @@ Versuchen Sie, das Projekt neu zu erstellen. Active - + Aktiv Restart Now @@ -30381,15 +30381,15 @@ Versuchen Sie, das Projekt neu zu erstellen. No details to show - + Keine Details verfügbar Select an extension to see more information about it. - + Wählen Sie eine Erweiterung aus, um Informationen darüber anzuzeigen. Last Update - + Letzte Aktualisierung Tags @@ -30433,31 +30433,31 @@ Versuchen Sie, das Projekt neu zu erstellen. Inactive - + Inaktiv Last updated - + Zuletzt aktualisiert Name - Name + Name All - Alle + Alle Extension packs - + Erweiterungspakete Individual extensions - + Einzelne Erweiterungen No extension found! - + Keine Erweiterungen gefunden! Manage Extensions @@ -30469,11 +30469,11 @@ Versuchen Sie, das Projekt neu zu erstellen. Filter by: %1 - + Filtern nach: %1 Sort by: %1 - + Sortieren nach: %1 Install... @@ -30485,43 +30485,43 @@ Versuchen Sie, das Projekt neu zu erstellen. Server URL: - + Server-URL: Note - Hinweis + Hinweis %1 does not check extensions from external vendors for security flaws or malicious intent, so be careful when installing them, as it might leave your computer vulnerable to attacks such as hacking, malware, and phishing. - + %1 überprüft keine Erweiterungen von externen Anbietern auf Sicherheitsprobleme oder böswillige Absichten. Seien Sie deshalb vorsichtig beim Installieren solcher Erweiterungen, da sie Ihren Computer für Angriffe wie Hacking, Schadsoftware und Phishing anfällig machen könnten. Use External Repository - + Externes Repository benutzen Install Extension... - + Erweiterung installieren... Plugin changes will take effect after restart. - Änderungen der Plugins werden nach einem Neustart wirksam. + Änderungen der Plugins werden nach einem Neustart wirksam. Browser - + Browser Documentation - Dokumentation + Dokumentation More Information - + Mehr Informationen New - Neu + Neu @@ -30536,7 +30536,7 @@ Versuchen Sie, das Projekt neu zu erstellen. Vendor Id: - + Anbieter-ID: Vendor: @@ -30544,7 +30544,7 @@ Versuchen Sie, das Projekt neu zu erstellen. Documentation: - Dokumentation: + Dokumentation: Location: @@ -30580,7 +30580,7 @@ Versuchen Sie, das Projekt neu zu erstellen. Id: - + ID: Compatibility version: @@ -30710,11 +30710,11 @@ Grund: %3 No callback set to accept terms and conditions - + Es ist kein Callback für das Annehmen von Bedingungen gesetzt You did not accept the terms and conditions - + Sie haben die Bedingungen nicht angenommen Cannot load plugin because dependency failed to load: %1(%2) @@ -30784,11 +30784,11 @@ Grund: %3 Plugin id "%1" must be lowercase - + Plugin-ID "%1" muss kleingeschrieben sein Terms and conditions: %1 - + Bedingungen: %1 Resolving dependencies failed because state != Read @@ -30864,11 +30864,11 @@ Grund: %3 deprecated - + veraltet experimental - + experimentell Utilities @@ -45873,12 +45873,13 @@ fails because Clang does not understand the target architecture. Qbs Profile Additions - + Ergänzungen zum Qbs-Profil Additional module properties to set in the Qbs profile corresponding to this kit. You will rarely need to do this. - + Zusätzliche Moduleigenschaften, die im Qbs-Profil des entsprechenden Kits gesetzt werden sollen. +Dies ist selten nötig. Qbs files @@ -46719,7 +46720,7 @@ Weder der Pfad zur Bibliothek noch der Pfad zu den Headerdateien wird zur .pro-D Starting qmake failed with the following error: %1 - + Das Starten von qmake ist mit folgendem Fehler fehlgeschlagen: %1 The build directory should be at the same level as the source directory. @@ -47651,7 +47652,7 @@ Weitere Informationen finden Sie auf der Dokumentationsseite "Checking Code A when condition cannot contain an object. - + Eine "when"-Bedingung kann kein Objekt enthalten. JavaScript blocks are not supported in a UI file (.ui.qml). @@ -47703,7 +47704,7 @@ Weitere Informationen finden Sie auf der Dokumentationsseite "Checking Code Arbitrary functions and function calls outside of a Connections object are not supported in a UI file (.ui.qml). - + Beliebige Funktionen und Funktionsaufrufe außerhalb des Connections-Objektes werden in einer UI-Datei (.ui.qml) nicht unterstützt. Duplicate import (%1). @@ -48116,7 +48117,7 @@ Sie können eine Annotation "// @uri My.Module.Uri" hinzufügen, um de Enable semantic highlighting (experimental) - + Semantische Hervorhebung aktivieren (experimentell) Enabled @@ -48140,11 +48141,11 @@ Sie können eine Annotation "// @uri My.Module.Uri" hinzufügen, um de Enable QML Language Server on this project. - + Aktiviere QML Language Server für dieses Projekt. Qt Quick - Qt Quick + Qt Quick Open .ui.qml files with: @@ -49438,7 +49439,7 @@ Sind Sie sicher? Enable CMake Generator - + CMake-Generator aktivieren @@ -49884,11 +49885,11 @@ wirklich entfernen? Error - Fehler + Fehler Warning - Warnung + Warnung Not all possible target environments can be supported due to missing compilers. @@ -50895,7 +50896,7 @@ Der Steuerprozess konnte nicht gestartet werden. The process crashed. - Der Prozess ist abgestürzt. + Der Prozess ist abgestürzt. "%1" failed to start: %2 @@ -53104,43 +53105,43 @@ Die Datei "%1" konnte nicht geöffnet werden. Diff Project Directory - + Diff des Projektverzeichnisses Diff Directory of Project "%1" - + Diff des Projektverzeichnisses von "%1" Project Directory Status - + Status des Projektverzeichnisses Status of Directory of Project "%1" - + Status des Projektverzeichnisses von "%1" Log Project Directory - + Log des Projektverzeichnisses Log Directory of Project "%1" - + Log des Projektverzeichnisses von "%1" Update Project Directory - + Projektverzeichnis aktualisieren Update Directory of Project "%1" - + Projektverzeichnis von "%1" aktualisieren Commit Project Directory - + Commit des Projektverzeichnisses Commit Directory of Project "%1" - + Commit des Projektverzeichnisses von "%1" Describe... diff --git a/src/app/main.cpp b/src/app/main.cpp index 6d4ca2f8b1b..c3a41fbb4c4 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -48,8 +48,9 @@ #ifdef ENABLE_CRASHPAD #define NOMINMAX -#include "client/crashpad_client.h" #include "client/crash_report_database.h" +#include "client/crashpad_client.h" +#include "client/crashpad_info.h" #include "client/settings.h" #endif @@ -443,6 +444,12 @@ void startCrashpad(const AppInfo &appInfo, bool crashReportingEnabled) annotations["sha1"] = Core::Constants::IDE_REVISION_STR; #endif + if (HostOsInfo::isWindowsHost()) { + // reduces the size of crash reports, which can be large on Windows + CrashpadInfo::GetCrashpadInfo() + ->set_gather_indirectly_referenced_memory(crashpad::TriState::kEnabled, 0); + } + // Optional arguments to pass to the handler std::vector arguments; arguments.push_back("--no-rate-limit"); diff --git a/src/libs/utils/environmentmodel.cpp b/src/libs/utils/environmentmodel.cpp index 20efb301ccd..9d5edb684fd 100644 --- a/src/libs/utils/environmentmodel.cpp +++ b/src/libs/utils/environmentmodel.cpp @@ -67,7 +67,8 @@ public: int findInResultInsertPosition(const QString &key) const { const auto compare = [](int compareResult) { return compareResult > 0; }; - return findIndex(m_resultNameValueDictionary, key, compare); + const int pos = findIndex(m_resultNameValueDictionary, key, compare); + return pos >= 0 ? pos : m_resultNameValueDictionary.size(); } int findInResult(const QString &key) const @@ -291,6 +292,7 @@ QModelIndex EnvironmentModel::addVariable(const EnvironmentItem &item) } else { // We add something that is not in the base dictionary // Insert a new line! + QTC_ASSERT(insertPos >= 0, insertPos = d->m_resultNameValueDictionary.size()); beginInsertRows(QModelIndex(), insertPos, insertPos); Q_ASSERT(changePos < 0); d->m_items.append(item); diff --git a/src/libs/utils/stringutils.cpp b/src/libs/utils/stringutils.cpp index dae35b817ba..04617064cab 100644 --- a/src/libs/utils/stringutils.cpp +++ b/src/libs/utils/stringutils.cpp @@ -110,7 +110,7 @@ enum class Base { Dec, Hex }; static bool isHex(const QChar &c) { - return (c >= 'a' && c <= 'f') || (c >= 'A' && c < 'F'); + return (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'); } static bool isDigit(const QChar &c, Base base) diff --git a/src/plugins/axivion/axivionperspective.cpp b/src/plugins/axivion/axivionperspective.cpp index e8bf0c84852..834c3a589c1 100644 --- a/src/plugins/axivion/axivionperspective.cpp +++ b/src/plugins/axivion/axivionperspective.cpp @@ -520,7 +520,7 @@ void IssuesWidget::updateTable() for (const Dto::ColumnInfoDto &column : m_currentTableInfo->columns) { columnHeaders << column.header.value_or(column.key); if (!column.showByDefault) - hiddenColumns << column.key; + hiddenColumns << columnHeaders.last(); IssueHeaderView::ColumnInfo info; info.key = column.key; info.sortable = column.canSort; diff --git a/src/plugins/axivion/axivionplugin.cpp b/src/plugins/axivion/axivionplugin.cpp index a683eda32a3..3befa77c520 100644 --- a/src/plugins/axivion/axivionplugin.cpp +++ b/src/plugins/axivion/axivionplugin.cpp @@ -1014,7 +1014,7 @@ void AxivionPluginPrivate::enableInlineIssues(bool enable) return; m_inlineIssuesEnabled = enable; - if (enable) + if (enable && m_dashboardServerId.isValid()) handleOpenedDocs(); else clearAllMarks(); @@ -1091,6 +1091,8 @@ void switchActiveDashboardId(const Id &toDashboardId) dd->m_serverAccess = ServerAccess::Unknown; dd->m_apiToken.reset(); dd->m_dashboardInfo.reset(); + dd->m_currentProjectInfo.reset(); + updatePerspectiveToolbar(); } const std::optional currentDashboardInfo() diff --git a/src/plugins/copilot/Copilot.json.in b/src/plugins/copilot/Copilot.json.in index 9a677db72fe..968215e9c5a 100644 --- a/src/plugins/copilot/Copilot.json.in +++ b/src/plugins/copilot/Copilot.json.in @@ -4,7 +4,7 @@ "Name" : "Copilot", "Version" : "${IDE_VERSION}", "CompatVersion" : "${IDE_VERSION_COMPAT}", - "DisabledByDefault" : true, + "Experimental" : true, "VendorId" : "theqtcompany", "Vendor" : "The Qt Company Ltd", "Copyright" : "${IDE_COPYRIGHT}", diff --git a/src/plugins/copilot/Description.md b/src/plugins/copilot/Description.md index a7dde131a41..6347d4bf732 100644 --- a/src/plugins/copilot/Description.md +++ b/src/plugins/copilot/Description.md @@ -1,3 +1,5 @@ +As with most solutions that use Generative AI, the Github Copilot extension is considered experimental. + ![Writing a function with Copilot](https://qtccache.qt.io/images/copilot/Copilot.gif) *Copilot in action* diff --git a/src/plugins/coreplugin/sessionview.cpp b/src/plugins/coreplugin/sessionview.cpp index fff2dfa7cde..0e1d58e3c6b 100644 --- a/src/plugins/coreplugin/sessionview.cpp +++ b/src/plugins/coreplugin/sessionview.cpp @@ -50,11 +50,6 @@ SessionView::SessionView(QWidget *parent) // Ensure that the full session name is visible. header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); - QItemSelection firstRow(m_sessionModel.index(0,0), m_sessionModel.index( - 0, m_sessionModel.columnCount() - 1)); - selectionModel()->select(firstRow, QItemSelectionModel::QItemSelectionModel:: - SelectCurrent); - connect(this, &Utils::TreeView::activated, this, [this](const QModelIndex &index){ emit sessionActivated(m_sessionModel.sessionAt(index.row())); }); diff --git a/src/plugins/git/branchview.cpp b/src/plugins/git/branchview.cpp index 555db9b01be..c8ff252f154 100644 --- a/src/plugins/git/branchview.cpp +++ b/src/plugins/git/branchview.cpp @@ -236,7 +236,7 @@ void BranchView::slotCustomContextMenu(const QPoint &point) SetInContext block(m_blockRefresh); QMenu contextMenu; - if (isLocal) + if (isLocal || hasActions) contextMenu.addAction(Tr::tr("&Add..."), this, &BranchView::add); const std::optional remote = m_model->remoteName(index); diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index f80ed6bd858..5973851fa20 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -2768,12 +2768,12 @@ bool GitClient::getCommitData(const FilePath &workingDirectory, // R old -> new // D deleted_file // ?? untracked_file - if (status != StatusUnchanged) { - if (!commitData.parseFilesFromStatus(output)) { - *errorMessage = msgParseFilesFailed(); - return false; - } + if (!commitData.parseFilesFromStatus(output)) { + *errorMessage = msgParseFilesFailed(); + return false; + } + if (status != StatusUnchanged) { // Filter out untracked files that are not part of the project QStringList untrackedFiles = commitData.filterFiles(UntrackedFile); diff --git a/src/plugins/git/instantblame.cpp b/src/plugins/git/instantblame.cpp index 5a87cf06442..0eb491c3372 100644 --- a/src/plugins/git/instantblame.cpp +++ b/src/plugins/git/instantblame.cpp @@ -382,7 +382,7 @@ void InstantBlame::perform() const Utils::FilePath workingDirectory = Utils::FilePath::fromString(fi.path()); const QString lineString = QString("%1,%1").arg(line); const auto lineDiffHandler = [this](const CommandResult &result) { - const QString error = result.cleanedStdErr(); + const QString error = result.cleanedStdErr().trimmed(); if (!error.isEmpty()) { qCWarning(log) << error; } diff --git a/src/plugins/texteditor/TextEditor.json.in b/src/plugins/texteditor/TextEditor.json.in index a5558b5864b..d88f141a18f 100644 --- a/src/plugins/texteditor/TextEditor.json.in +++ b/src/plugins/texteditor/TextEditor.json.in @@ -51,6 +51,11 @@ " ", " ", " ", + " ", + " Rust souce file", + " ", + " ", + " ", "" ] } diff --git a/src/plugins/texteditor/refactoringchanges.cpp b/src/plugins/texteditor/refactoringchanges.cpp index 017474fe66d..7dfe6f4c662 100644 --- a/src/plugins/texteditor/refactoringchanges.cpp +++ b/src/plugins/texteditor/refactoringchanges.cpp @@ -280,7 +280,7 @@ bool RefactoringFile::apply() fileChanged(); if (withUnmodifiedEditor && EditorManager::autoSaveAfterRefactoring()) - m_editor->textDocument()->save(m_filePath, false); + DocumentManager::saveDocument(m_editor->textDocument(), m_filePath); } } diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index f44fa7b7baf..e07a1a61d87 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -343,6 +343,14 @@ protected: void wheelEvent(QWheelEvent *event) override { QCoreApplication::sendEvent(textEdit->viewport(), event); } + bool event(QEvent *event) override + { + if (event->type() == QEvent::ToolTip) { + textEdit->extraAreaToolTipEvent(static_cast(event)); + return true; + } + return QWidget::event(event); + } private: TextEditorWidget *textEdit; @@ -7062,8 +7070,10 @@ void TextEditorWidget::mousePressEvent(QMouseEvent *e) RefactorMarker refactorMarker = d->m_refactorOverlay->markerAt(e->pos()); if (refactorMarker.isValid()) { - if (refactorMarker.callback) + if (refactorMarker.callback) { refactorMarker.callback(this); + return; + } } else { d->m_linkPressed = d->isMouseNavigationEvent(e); } @@ -7370,6 +7380,25 @@ void TextEditorWidget::updateFoldingHighlight(const QTextCursor &cursor) d->m_highlightBlocksTimer.start(d->m_highlightBlocksInfo.isEmpty() ? 120 : 0); } +void TextEditorWidget::extraAreaToolTipEvent(QHelpEvent *e) +{ + QTextCursor cursor = cursorForPosition(QPoint(0, e->pos().y())); + + int markWidth = 0; + extraAreaWidth(&markWidth); + const bool inMarkArea = e->pos().x() <= markWidth && e->pos().x() >= 0; + if (!inMarkArea) + return; + int line = cursor.blockNumber() + 1; + if (d->extraAreaPreviousMarkTooltipRequestedLine != line) { + if (auto data = static_cast(cursor.block().userData())) { + if (!data->marks().isEmpty()) + d->showTextMarksToolTip(mapToGlobal(e->pos()), data->marks()); + } + } + d->extraAreaPreviousMarkTooltipRequestedLine = line; +} + void TextEditorWidget::extraAreaMouseEvent(QMouseEvent *e) { QTextCursor cursor = cursorForPosition(QPoint(0, e->pos().y())); @@ -7386,16 +7415,14 @@ void TextEditorWidget::extraAreaMouseEvent(QMouseEvent *e) // Set whether the mouse cursor is a hand or normal arrow if (e->type() == QEvent::MouseMove) { if (inMarkArea) { + // tool tips are shown in extraAreaToolTipEvent int line = cursor.blockNumber() + 1; if (d->extraAreaPreviousMarkTooltipRequestedLine != line) { if (auto data = static_cast(cursor.block().userData())) { if (data->marks().isEmpty()) ToolTip::hide(); - else - d->showTextMarksToolTip(mapToGlobal(e->pos()), data->marks()); } } - d->extraAreaPreviousMarkTooltipRequestedLine = line; } if (!d->m_markDragging && e->buttons() & Qt::LeftButton && !d->m_markDragStart.isNull()) { diff --git a/src/plugins/texteditor/texteditor.h b/src/plugins/texteditor/texteditor.h index da2a4eb6dca..0b320c9c706 100644 --- a/src/plugins/texteditor/texteditor.h +++ b/src/plugins/texteditor/texteditor.h @@ -312,6 +312,7 @@ public: virtual void extraAreaLeaveEvent(QEvent *); virtual void extraAreaContextMenuEvent(QContextMenuEvent *); virtual void extraAreaMouseEvent(QMouseEvent *); + virtual void extraAreaToolTipEvent(QHelpEvent *e); void updateFoldingHighlight(const QPoint &pos); void updateFoldingHighlight(const QTextCursor &cursor); diff --git a/src/plugins/vcsbase/vcscommand.cpp b/src/plugins/vcsbase/vcscommand.cpp index a10586458ec..61c6fe36431 100644 --- a/src/plugins/vcsbase/vcscommand.cpp +++ b/src/plugins/vcsbase/vcscommand.cpp @@ -128,6 +128,7 @@ void VcsCommandPrivate::installStdCallbacks(Process *process) || m_progressParser || !(m_flags & RunFlags::SuppressStdErr))) { process->setTextChannelMode(Channel::Error, TextChannelMode::MultiLine); connect(process, &Process::textOnStandardError, this, [this](const QString &text) { + VcsOutputWindow::setRepository(m_defaultWorkingDirectory); if (!(m_flags & RunFlags::SuppressStdErr)) VcsOutputWindow::appendError(text); if (m_flags & RunFlags::ProgressiveOutput) @@ -138,6 +139,7 @@ void VcsCommandPrivate::installStdCallbacks(Process *process) || m_flags & RunFlags::ShowStdOut) { process->setTextChannelMode(Channel::Output, TextChannelMode::MultiLine); connect(process, &Process::textOnStandardOutput, this, [this](const QString &text) { + VcsOutputWindow::setRepository(m_defaultWorkingDirectory); if (m_flags & RunFlags::ShowStdOut) VcsOutputWindow::append(text); if (m_flags & RunFlags::ProgressiveOutput) @@ -305,6 +307,7 @@ CommandResult VcsCommand::runBlockingHelper(const CommandLine &command, int time return {}; const Internal::VcsCommandPrivate::Job job{command, timeoutS, d->m_defaultWorkingDirectory}; + VcsOutputWindow::setRepository(d->m_defaultWorkingDirectory); d->setupProcess(&process, job); const EventLoopMode eventLoopMode = d->eventLoopMode(); diff --git a/src/share/3rdparty/package-manager/auto-setup.cmake b/src/share/3rdparty/package-manager/auto-setup.cmake index 6f6aa159d88..867b7f41ee6 100644 --- a/src/share/3rdparty/package-manager/auto-setup.cmake +++ b/src/share/3rdparty/package-manager/auto-setup.cmake @@ -63,6 +63,11 @@ macro(qtc_auto_setup_conan) option(QT_CREATOR_SKIP_CONAN_SETUP "Skip Qt Creator's conan package manager auto-setup" OFF) set(QT_CREATOR_CONAN_BUILD_POLICY "missing" CACHE STRING "Qt Creator's conan package manager auto-setup build policy. This is used for the BUILD property of cmake_conan_run") + set_property( + DIRECTORY "${CMAKE_SOURCE_DIR}" + APPEND + PROPERTY CMAKE_CONFIGURE_DEPENDS "${conanfile_txt}") + find_program(conan_program conan) if (NOT conan_program) message(WARNING "Qt Creator: conan executable not found. " @@ -206,6 +211,11 @@ macro(qtc_auto_setup_vcpkg) if (EXISTS "${CMAKE_SOURCE_DIR}/vcpkg.json" AND NOT QT_CREATOR_SKIP_VCPKG_SETUP) option(QT_CREATOR_SKIP_VCPKG_SETUP "Skip Qt Creator's vcpkg package manager auto-setup" OFF) + set_property( + DIRECTORY "${CMAKE_SOURCE_DIR}" + APPEND + PROPERTY CMAKE_CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/vcpkg.json") + find_program(vcpkg_program vcpkg PATHS $ENV{VCPKG_ROOT} ${CMAKE_SOURCE_DIR}/vcpkg ${CMAKE_SOURCE_DIR}/3rdparty/vcpkg NO_DEFAULT_PATH diff --git a/src/shared/qbs b/src/shared/qbs index e44a761b3b2..56b87afde61 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit e44a761b3b2081bb3ac4ee320d868310bd37312a +Subproject commit 56b87afde6183db8c5c0e03b986a4e80b932be86 diff --git a/tests/auto/utils/stringutils/tst_stringutils.cpp b/tests/auto/utils/stringutils/tst_stringutils.cpp index 78a75611366..b69aca4ba7b 100644 --- a/tests/auto/utils/stringutils/tst_stringutils.cpp +++ b/tests/auto/utils/stringutils/tst_stringutils.cpp @@ -106,6 +106,7 @@ void tst_StringUtils::testParseUsedPortFromNetstatOutput_data() // Linux QTest::newRow("Linux1") << "sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt ..." << -1; QTest::newRow("Linux2") << "0: 00000000:2805 00000000:0000 0A 00000000:00000000 00:00000000 00000000 ..." << 10245; + QTest::newRow("Linux3") << " 1: 0100007F:193F 00000000:0000 0A 00000000:00000000 00:00000000 00000000 ..." << 6463; // Mac QTest::newRow("Mac1") << "Active Internet connections (including servers)" << -1;