diff --git a/CMakeLists.txt b/CMakeLists.txt index 36ac23e0f3b..224ff3b6de3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,6 +77,9 @@ find_package(Qt6 REQUIRED ) +find_package(Qt6 OPTIONAL_COMPONENTS Quick QuickWidgets Designer DesignerComponentsPrivate + Help SerialPort Svg Tools LinguistTools QUIET) + # depending on Qt version and compiler version enable or disable Qml Designer # can be overwritten by variable WITH_QMLDESIGNER / QTC_WITH_QMLDESIGNER (env) configure_qml_designer(${Qt6_VERSION}) @@ -106,9 +109,6 @@ if (MSVC AND QT_FEATURE_static_runtime) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") endif() -find_package(Qt6 OPTIONAL_COMPONENTS Quick QuickWidgets Designer DesignerComponentsPrivate - Help SerialPort Svg Tools LinguistTools QUIET) - find_package(Threads) find_package(Clang QUIET) diff --git a/CMakePresets.json b/CMakePresets.json index 0e4b60e22b7..b859e1ac4ef 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -8,7 +8,7 @@ "hidden" : true, "cacheVariables": { "BUILD_PLUGINS": "Core;Designer;DiffEditor;TextEditor;ProjectExplorer;CppEditor;CodePaster;Docker;Git;Help;QmakeProjectManager;CMakeProjectManager;ClangCodeModel;ClangTools;ClangFormat;Debugger;QtSupport;ResourceEditor;VcsBase;Welcome;LanguageClient;RemoteLinux", - "BUILD_EXECUTABLES": "QtCreator;qtcreator_ctrlc_stub;qtcreator_process_stub;win64interrupt;qtcreator_processlauncher", + "BUILD_EXECUTABLES": "QtCreator;qtcreator_ctrlc_stub;qtcreator_process_stub;win64interrupt", "WITH_QMLDESIGNER": "OFF" } } diff --git a/README.md b/README.md index 14a08075fc2..96da4ba0e5a 100644 --- a/README.md +++ b/README.md @@ -40,16 +40,16 @@ https://doc.qt.io/qtcreator-extending/coding-style.html Prerequisites: -* Qt 6.4.3 or later. The Qt version that you use to build Qt Creator defines the +* Qt 6.5.3 or later. The Qt version that you use to build Qt Creator defines the minimum platform versions that the result supports - (Windows 10, RHEL/CentOS 8.4, Ubuntu 20.04, macOS 10.15 for Qt 6.4.3). + (Windows 10, RHEL/CentOS 8.8, Ubuntu 22.04, macOS 11 for Qt 6.5.3). * Qt WebEngine module for QtWebEngine based help viewer * On Windows: * MinGW with GCC 11.2 or Visual Studio 2019 or later * Python 3.8 or later (optional, needed for the python enabled debug helper) * Debugging Tools for Windows (optional, for MSVC debugging support with CDB) * On macOS: latest Xcode -* On Linux: GCC 9 or later +* On Linux: GCC 10 or later * LLVM/Clang 14 or later (optional, LLVM/Clang 17 is recommended. See [instructions](#getting-llvmclang-for-the-clang-code-model) on how to get LLVM. diff --git a/cmake/QtCreatorAPI.cmake b/cmake/QtCreatorAPI.cmake index 92bc2283a43..4dea5d3a24e 100644 --- a/cmake/QtCreatorAPI.cmake +++ b/cmake/QtCreatorAPI.cmake @@ -3,7 +3,7 @@ if(QT_CREATOR_API_DEFINED) endif() set(QT_CREATOR_API_DEFINED TRUE) -set(IDE_QT_VERSION_MIN "6.4.3") +set(IDE_QT_VERSION_MIN "6.5.3") include(${CMAKE_CURRENT_LIST_DIR}/QtCreatorAPIInternal.cmake) include(${CMAKE_CURRENT_LIST_DIR}/QtcSeparateDebugInfo.cmake) diff --git a/cmake/QtCreatorAPIInternal.cmake b/cmake/QtCreatorAPIInternal.cmake index 9fcf5d656d1..65533395bf4 100644 --- a/cmake/QtCreatorAPIInternal.cmake +++ b/cmake/QtCreatorAPIInternal.cmake @@ -22,9 +22,7 @@ list(APPEND DEFAULT_DEFINES QT_CREATOR QT_NO_JAVA_STYLE_ITERATORS QT_NO_CAST_TO_ASCII QT_RESTRICTED_CAST_FROM_ASCII QT_NO_FOREACH - QT_DISABLE_DEPRECATED_BEFORE=0x050900 QT_DISABLE_DEPRECATED_UP_TO=0x050900 - QT_WARN_DEPRECATED_BEFORE=0x060400 QT_WARN_DEPRECATED_UP_TO=0x060400 QT_USE_QSTRINGBUILDER ) @@ -78,6 +76,10 @@ elseif(WIN32) set(_IDE_HEADER_INSTALL_PATH "include/qtcreator") set(_IDE_CMAKE_INSTALL_PATH "lib/cmake") else () + # Small hack to silence a warning in the stable branch - but it means the value is incorrect + if (NOT CMAKE_LIBRARY_ARCHITECTURE) + set(CMAKE_INSTALL_LIBDIR "lib") + endif() include(GNUInstallDirs) set(_IDE_APP_PATH "${CMAKE_INSTALL_BINDIR}") set(_IDE_APP_TARGET "${IDE_ID}") @@ -195,7 +197,7 @@ endfunction() function(qtc_add_link_flags_no_undefined target) # needs CheckLinkerFlags - if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.18 AND NOT MSVC) + if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.18 AND NOT MSVC AND NOT APPLE) set(no_undefined_flag "-Wl,--no-undefined") check_linker_flag(CXX ${no_undefined_flag} QTC_LINKER_SUPPORTS_NO_UNDEFINED) if (NOT QTC_LINKER_SUPPORTS_NO_UNDEFINED) diff --git a/cmake/QtCreatorIDEBranding.cmake b/cmake/QtCreatorIDEBranding.cmake index 467258e8ca6..1b83be85555 100644 --- a/cmake/QtCreatorIDEBranding.cmake +++ b/cmake/QtCreatorIDEBranding.cmake @@ -1,6 +1,6 @@ -set(IDE_VERSION "15.0.1") # The IDE version. -set(IDE_VERSION_COMPAT "15.0.0") # The IDE Compatibility version. -set(IDE_VERSION_DISPLAY "15.0.1") # The IDE display version. +set(IDE_VERSION "15.0.84") # The IDE version. +set(IDE_VERSION_COMPAT "15.0.84") # The IDE Compatibility version. +set(IDE_VERSION_DISPLAY "16.0.0-rc1") # The IDE display version. set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation. set(IDE_DISPLAY_NAME "Qt Creator") # The IDE display name. diff --git a/cmake/QtcSeparateDebugInfo.cmake b/cmake/QtcSeparateDebugInfo.cmake index 9fb4047223a..9e6a0e04c7f 100644 --- a/cmake/QtcSeparateDebugInfo.cmake +++ b/cmake/QtcSeparateDebugInfo.cmake @@ -49,7 +49,8 @@ function(qtc_enable_separate_debug_info target installDestination) endif() if(APPLE) get_target_property(is_framework ${target} FRAMEWORK) - if(is_framework) + get_target_property(is_bundle ${target} MACOSX_BUNDLE) + if(is_framework OR is_bundle) set(debug_info_bundle_dir "$.${debug_info_suffix}") set(BUNDLE_ID Qt${target}) else() @@ -99,7 +100,7 @@ function(qtc_enable_separate_debug_info target installDestination) TARGET ${target} POST_BUILD ${commands} - ) + VERBATIM) endfunction() # Installs pdb files for given target into the specified install dir. diff --git a/cmake/Utils.cmake b/cmake/Utils.cmake index 12f4dcf5380..4d9eb4e9f23 100644 --- a/cmake/Utils.cmake +++ b/cmake/Utils.cmake @@ -65,6 +65,7 @@ function(configure_qml_designer Qt6_VERSION) set(QMLDESIGNER_GCC_REQUIRED_VERSION 10.0) set(QMLDESIGNER_CLANG_REQUIRED_VERSION 13.0) set(QMLDESIGNER_APPLECLANG_REQUIRED_VERSION 15.0) + set(QMLDESIGNER_MSVC_REQUIRED_VERSION 1930) # means MSVC 2022 set(PROJECTSTORAGE_QT_MIN_VERSION 6.8.1) set(PROJECTSTORAGE_QT_MAX_VERSION 6.9.0) @@ -84,13 +85,24 @@ function(configure_qml_designer Qt6_VERSION) CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${QMLDESIGNER_CLANG_REQUIRED_VERSION}) set(QTC_WITH_QMLDESIGNER_DEFAULT OFF) string(APPEND QMLDESIGNER_FEATURE_DESC " and at least Clang ${QMLDESIGNER_CLANG_REQUIRED_VERSION}") + elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" AND + CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${QMLDESIGNER_MSVC_REQUIRED_VERSION}) + set(QTC_WITH_QMLDESIGNER_DEFAULT OFF) + string(APPEND QMLDESIGNER_FEATURE_DESC " and at least MSVC 2022(ver. ${QMLDESIGNER_MSVC_REQUIRED_VERSION})") else() set(QTC_WITH_QMLDESIGNER_DEFAULT ON) endif() + if (NOT QTC_WITH_QMLDESIGNER_DEFAULT) + string(APPEND QMLDESIGNER_FEATURE_DESC ", found ${CMAKE_CXX_COMPILER_VERSION}") + endif() else() set(QTC_WITH_QMLDESIGNER_DEFAULT OFF) endif() + if(NOT TARGET Qt::Quick) + set(QTC_WITH_QMLDESIGNER_DEFAULT OFF) + endif() + env_with_default("QTC_WITH_QMLDESIGNER" ENV_QTC_WITH_QMLDESIGNER ${QTC_WITH_QMLDESIGNER_DEFAULT}) option(WITH_QMLDESIGNER "Build QmlDesigner" ${ENV_QTC_WITH_QMLDESIGNER}) add_feature_info("WITH_QMLDESIGNER" ${WITH_QMLDESIGNER} "${QMLDESIGNER_FEATURE_DESC}") diff --git a/coin/instructions/common_environment.yaml b/coin/instructions/common_environment.yaml index 4c96bbb2ba7..74f0ab2e1f9 100644 --- a/coin/instructions/common_environment.yaml +++ b/coin/instructions/common_environment.yaml @@ -20,7 +20,7 @@ instructions: instructions: - type: EnvironmentVariable variableName: QTC_QT_BASE_URL - variableValue: "https://ci-files02-hki.ci.qt.io/packages/jenkins/qt/6.4.3/release_content/" + variableValue: "https://ci-files02-hki.ci.qt.io/packages/jenkins/qt/6.5.3/release_content/" - type: EnvironmentVariable variableName: MACOSX_DEPLOYMENT_TARGET variableValue: 11.0 diff --git a/dist/changelog/changes-16.0.0.md b/dist/changelog/changes-16.0.0.md new file mode 100644 index 00000000000..339a34dade8 --- /dev/null +++ b/dist/changelog/changes-16.0.0.md @@ -0,0 +1,314 @@ +Qt Creator 16 +============= + +Qt Creator version 16 contains bug fixes and new features. +It is a free upgrade for commercial license holders. + +The most important changes are listed in this document. For a complete list of +changes, see the Git log for the Qt Creator sources that you can check out from +the public Git repository or view online at + + + +Editing +------- + +* Removed the confusing `Mixed` indentation setting + ([QTCREATORBUG-11575](https://bugreports.qt.io/browse/QTCREATORBUG-11575), + [QTCREATORBUG-11675](https://bugreports.qt.io/browse/QTCREATORBUG-11675), + [QTCREATORBUG-19576](https://bugreports.qt.io/browse/QTCREATORBUG-19576), + [QTCREATORBUG-25628](https://bugreports.qt.io/browse/QTCREATORBUG-25628)) +* Added auto-detection for the indentation setting + `Preferences > Text Editor > Behavior` +* Added a button for indentation settings to the editor toolbar +* Fixed that `File > Close` / `Ctrl + W` closed pinned files + ([QTCREATORBUG-25964](https://bugreports.qt.io/browse/QTCREATORBUG-25964)) +* Fixed the behavior of `Shift + Backspace` for multi-cursor editing + ([QTCREATORBUG-32374](https://bugreports.qt.io/browse/QTCREATORBUG-32374)) + +### C++ + +* Changed + `Preferences > C++ > Quick Fixes > Getter Setter Generation Properties` + to use JavaScript expressions for transformation of the contents + ([QTCREATORBUG-32302](https://bugreports.qt.io/browse/QTCREATORBUG-32302)) +* Improved the dialog for `Create implementations for member functions` + ([QTCREATORBUG-32193](https://bugreports.qt.io/browse/QTCREATORBUG-32193)) +* Fixed a formatting issue when applying method signature changes + ([QTCREATORBUG-31931](https://bugreports.qt.io/browse/QTCREATORBUG-31931)) +* Built-in + * Added support for init-statements in range-based `for` loops + ([QTCREATORBUG-31961](https://bugreports.qt.io/browse/QTCREATORBUG-31961)) + * Added support for refactoring in the presence of concepts + ([QTCREATORBUG-31214](https://bugreports.qt.io/browse/QTCREATORBUG-31214)) + +### QML + +* qmlls + * Added the value of the `QML_IMPORT_PATH` CMake variable to the imports + passed to `qmlls` + * Changed `Go to Definition` to be a non-advanced feature + ([QTBUG-131920](https://bugreports.qt.io/browse/QTBUG-131920)) + * Changed the outline to be an advanced feature + ([QTCREATORBUG-31767](https://bugreports.qt.io/browse/QTCREATORBUG-31767)) + * Fixed that the language server was not restarted after changing the Qt + version in the kit + ([QTCREATORBUG-32044](https://bugreports.qt.io/browse/QTCREATORBUG-32044)) + * Fixed that toolbars where created over and over again + ([QTCREATORBUG-32356](https://bugreports.qt.io/browse/QTCREATORBUG-32356)) + +### Language Server Protocol + +* Added support for `Diagnostic.CodeDescription` + ([LSP Documentation](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#codeDescription)) +* Added the option to enable or disable language servers per project + ([QTCREATORBUG-31987](https://bugreports.qt.io/browse/QTCREATORBUG-31987)) +* Fixed that information messages were shown in the same style as warnings in + the editor + ([QTCREATORBUG-31878](https://bugreports.qt.io/browse/QTCREATORBUG-31878), + [QTCREATORBUG-32163](https://bugreports.qt.io/browse/QTCREATORBUG-32163)) + +Projects +-------- + +* Added `SDKs` settings category + ([Documentation](https://doc-snapshots.qt.io/qtcreator-master/creator-how-tos.html#sdks)) + * Added settings for the Windows App SDK + ([QTBUG-124800](https://bugreports.qt.io/browse/QTBUG-124800)) + * Moved the Android and QNX SDK settings to the new category +* Added support for [LoongArch](https://en.wikipedia.org/wiki/Loongson#LoongArch) + architecture +* Added an option for the run environment to the kit settings + ([QTCREATORBUG-31906](https://bugreports.qt.io/browse/QTCREATORBUG-31906)) +* Merged various related kit settings to the same row in + `Preferences > Kits > Kits` + ([Documentation](https://doc-snapshots.qt.io/qtcreator-master/creator-preferences-kits.html)) +* Made build configuration specific variables like `Device:HostAddress` and + `Device:KeyFiles` available to deploy configurations +* Improved the target setup page in Projects mode + * Made the `Configure` button always visible + ([QTCREATORBUG-31314](https://bugreports.qt.io/browse/QTCREATORBUG-31314)) + * Made the initially selected kit visible without scrolling +* Fixed some inconsistencies between build device and run device settings + ([QTCREATORBUG-32124](https://bugreports.qt.io/browse/QTCREATORBUG-32124)) +* Fixed that the application output doesn't show the last line when filtering + is active + ([QTCREATORBUG-31959](https://bugreports.qt.io/browse/QTCREATORBUG-31959)) +* Fixed that the project specific editor settings were not applied to the + Markdown editor + ([QTCREATORBUG-31875](https://bugreports.qt.io/browse/QTCREATORBUG-31875)) +* Fixed the title of `Build for Run Configuration ` + ([QTCREATORBUG-32350](https://bugreports.qt.io/browse/QTCREATORBUG-32350)) +* Fixed a crash when an application outputs lots of lines + ([QTCREATORBUG-32371](https://bugreports.qt.io/browse/QTCREATORBUG-32371)) +* Qt + * Improved performance of Qt ABI detection when module `.json` files are + available + ([QTCREATORBUG-31943](https://bugreports.qt.io/browse/QTCREATORBUG-31943)) + * Improved performance of collecting Qt version information + * Removed unnecessary warning when the Qt version in a kit does not + have a QML utility + ([QTCREATORBUG-32052](https://bugreports.qt.io/browse/QTCREATORBUG-32052)) +* Qt Creator Plugin Wizard + * Added support for building for Windows and Linux on ARM on GitHub + * Added a run configuration that runs the Qt Creator that the plugin was + built with + +### CMake + +* Simplified the project tree hierarchy for empty subdirectories + ([QTCREATORBUG-32217](https://bugreports.qt.io/browse/QTCREATORBUG-32217)) +* Added support for creating run configurations for custom CMake targets + with the `qtc_runnable` `FOLDER` property + ([QTCREATORBUG-32324](https://bugreports.qt.io/browse/QTCREATORBUG-32324)) +* Fixed that manually created run configurations could be removed if + `Create suitable run configurations automatically` was turned off + ([QTCREATORBUG-32289](https://bugreports.qt.io/browse/QTCREATORBUG-32289)) +* Fixed issues with Objective-C/C++ files if `OBJCXX` is added to the + list of languages in the project file + ([QTCREATORBUG-32282](https://bugreports.qt.io/browse/QTCREATORBUG-32282)) +* Fixed that Ninja was not detected even when `CMAKE_MAKE_PROGRAM` was set + to the `ninja` executable + ([QTCREATORBUG-32436](https://bugreports.qt.io/browse/QTCREATORBUG-32436)) +* Package Manager Auto Setup + * Changed the default installation directory to `/tmp` to ensure that the + directory is writable + ([QTCREATORBUG-31570](https://bugreports.qt.io/browse/QTCREATORBUG-31570), + [QTCREATORBUG-32430](https://bugreports.qt.io/browse/QTCREATORBUG-32430)) + +### Qmake + +* Fixed that `.pri` files that are included but unused were not marked as + inactive in the project tree + ([QTCREATORBUG-32405](https://bugreports.qt.io/browse/QTCREATORBUG-32405)) + +### Meson + +* Replaced explicit calls to `ninja` by their equivalent `meson` calls + ([QTCREATORBUG-31407](https://bugreports.qt.io/browse/QTCREATORBUG-31407)) +* Improved the layout of the project tree + +Debugging +--------- + +* Changed that clicking disabled breakpoints enables them instead of removing + them +* Fixed the movement of pinned debugger tooltips with extra editor windows + ([QTCREATORBUG-24109](https://bugreports.qt.io/browse/QTCREATORBUG-24109)) + +### C++ + +* Pretty printers + * Added `QMultiHash` + ([QTCREATORBUG-32313](https://bugreports.qt.io/browse/QTCREATORBUG-32313)) +* CDB + * Disabled heap debugging by default and added the option + `Enable heap debugging` + ([QTCREATORBUG-32102](https://bugreports.qt.io/browse/QTCREATORBUG-32102)) + +Analyzer +-------- + +### Clang + +* Fixed a crash when the tool is run in parallel + ([QTCREATORBUG-32411](https://bugreports.qt.io/browse/QTCREATORBUG-32411)) + +### QML Profiler + +* Fixed issues with restarting the profiler on remote Linux devices + ([QTCREATORBUG-31372](https://bugreports.qt.io/browse/QTCREATORBUG-31372)) +* Fixed that profiling could fail to start + ([QTCREATORBUG-32062](https://bugreports.qt.io/browse/QTCREATORBUG-32062)) + +### Axivion + +* Added support for images in the issue details +* Moved Axivion preferences to `Preferences > Analyzer > Axivion` + +### Coco + +* Added support for configuring CMake and qmake projects for code coverage + in `Projects > Project Settings > Coco Code Coverage` + ([Documentation]https://doc-snapshots.qt.io/qtcreator-16.0/creator-coco.html) + +Version Control Systems +----------------------- + +* Added automatic detection of files under version control even when the + corresponding plugin is disabled +* Added a notification that suggests enabling a version control plugin when + files under that version control are detected +* Disabled the `Bazaar`, `Fossil`, `Mercurial`, and `Subversion` support + plugins by default + +### Git + +* Increased minimum Git version to 2.13.0 +* Added `Create Branch From` to the context menu on commits in `Git Log` + ([Documentation](https://doc-snapshots.qt.io/qtcreator-16.0/creator-how-to-git-log.html)) +* Added the option to show the log of the branch in the `Git Commit` and `Amend` + views by clicking the branch name +* Added the action `Status (Including All Untracked)`, and changed the standard + `Status` action to exclude untracked files + ([QTCREATORBUG-32301](https://bugreports.qt.io/browse/QTCREATORBUG-32301)) + +Platforms +--------- + +### Windows + +* Fixed that temporary files were created when saving files on the FAT file + system and removed only at Qt Creator shutdown + ([QTCREATORBUG-29942](https://bugreports.qt.io/browse/QTCREATORBUG-29942)) + +### Linux + +* Added support for the `terminator` terminal emulator + ([QTCREATORBUG-32111](https://bugreports.qt.io/browse/QTCREATORBUG-32111)) + +### Android + +* Fixed a performance problem when detecting the Android ABI + ([QTCREATORBUG-31068](https://bugreports.qt.io/browse/QTCREATORBUG-31068)) + +### iOS + +* Added support for application output and C++ debugging for devices with iOS 17 + and later +* Fixed a crash when stopping applications on devices with iOS 16 and earlier +* Fixed QML profiling on devices with iOS 16 and earlier + ([QTCREATORBUG-32403](https://bugreports.qt.io/browse/QTCREATORBUG-32403)) +* Fixed that the development teams could not be determined with Xcode 16.2 + and later + ([QTCREATORBUG-32447](https://bugreports.qt.io/browse/QTCREATORBUG-32447)) + +### Remote Linux + +* Added support for `GoCmdBridge` for performance improvements + +### Docker + +* Fixed an issue with running `pkg-config` in the container + ([QTCREATORBUG-32325](https://bugreports.qt.io/browse/QTCREATORBUG-32325)) + +Credits for these changes go to: +-------------------------------- +Alessandro Portale +Alexander Drozdov +Alexander Pershin +Alexis Jeandet +Ali Kianian +Andre Hartmann +André Pönitz +Andrii Batyiev +Andrii Semkiv +Artur Twardy +Brook Cronin +Burak Hancerli +Christian Kandeler +Christian Stenger +Cristian Adam +David Faure +David Schulz +Eike Ziller +Esa Törmänen +Henning Gruendl +Jaime Resano +Jaroslaw Kobus +Johanna Vanhatapio +Jörg Bornemann +Kai Köhne +Knud Dollereder +Leena Miettinen +Liu Zhangjian +Lukasz Papierkowski +Mahmoud Badri +Marco Bubke +Marcus Tillmanns +Markus Redeker +Masoud Jami +Mats Honkamaa +Miikka Heikkinen +Mitch Curtis +Morteza Jamshidi +Nikolaus Demmel +Olivier De Cannière +Orgad Shaneh +Patryk Stachniak +Pranta Dastider +Przemyslaw Lewandowski +Rafal Stawarski +Ralf Habacker +Robert Löhning +Sami Shalayel +Semih Yavuz +Shrief Gabr +Shyamnath Premnadh +Tasuku Suzuki +Teea Poldsam +Thiago Macieira +Thomas Hartmann +Tim Jenßen +Vikas Pachdha +Xu Jin diff --git a/dist/changelog/template.md b/dist/changelog/template.md index d340cee5dd3..3ad0888ab5d 100644 --- a/dist/changelog/template.md +++ b/dist/changelog/template.md @@ -2,6 +2,7 @@ Qt Creator 13 ============= Qt Creator version 13 contains bug fixes and new features. +It is a free upgrade for commercial license holders. The most important changes are listed in this document. For a complete list of changes, see the Git log for the Qt Creator sources that you can check out from @@ -64,6 +65,8 @@ Projects ### Autotools +### Meson + ### vcpkg ### Qt Safe Renderer @@ -82,8 +85,12 @@ Analyzer ### Clang +### QML Profiler + ### Axivion +### Coco + ### CTF Visualizer ### Valgrind diff --git a/doc/config/macros.qdocconf b/doc/config/macros.qdocconf index b3461ad939f..916c9623a18 100644 --- a/doc/config/macros.qdocconf +++ b/doc/config/macros.qdocconf @@ -14,6 +14,7 @@ macro.key = "\\b" macro.menu = "\\b" macro.macos = "macOS" macro.note = "\\b{Note:}" +macro.nullptr = "\\c{nullptr}" macro.oslash.HTML = "ø" macro.ouml.HTML = "ö" macro.B2Q = "Boot to Qt" diff --git a/doc/qtcreator/images/qtcreator-cdb-options.png b/doc/qtcreator/images/qtcreator-cdb-options.png deleted file mode 100644 index 2e8211452b1..00000000000 Binary files a/doc/qtcreator/images/qtcreator-cdb-options.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-coco.png b/doc/qtcreator/images/qtcreator-coco.png index 851897ef2b3..841ba4f196f 100644 Binary files a/doc/qtcreator/images/qtcreator-coco.png and b/doc/qtcreator/images/qtcreator-coco.png differ diff --git a/doc/qtcreator/images/qtcreator-editor-settings.webp b/doc/qtcreator/images/qtcreator-editor-settings.webp index 68672be4d11..b9c46c1717a 100644 Binary files a/doc/qtcreator/images/qtcreator-editor-settings.webp and b/doc/qtcreator/images/qtcreator-editor-settings.webp differ diff --git a/doc/qtcreator/images/qtcreator-git-amend.png b/doc/qtcreator/images/qtcreator-git-amend.png deleted file mode 100644 index 2aa74da5eb7..00000000000 Binary files a/doc/qtcreator/images/qtcreator-git-amend.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-git-amend.webp b/doc/qtcreator/images/qtcreator-git-amend.webp new file mode 100644 index 00000000000..3f289d460fc Binary files /dev/null and b/doc/qtcreator/images/qtcreator-git-amend.webp differ diff --git a/doc/qtcreator/images/qtcreator-kits-cmake.png b/doc/qtcreator/images/qtcreator-kits-cmake.png deleted file mode 100644 index 404e90ce271..00000000000 Binary files a/doc/qtcreator/images/qtcreator-kits-cmake.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-kits.png b/doc/qtcreator/images/qtcreator-kits.png deleted file mode 100644 index 9cd08c36cc5..00000000000 Binary files a/doc/qtcreator/images/qtcreator-kits.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-preferences-android.webp b/doc/qtcreator/images/qtcreator-preferences-android.webp index 3c6e909df2e..f5017be66b0 100644 Binary files a/doc/qtcreator/images/qtcreator-preferences-android.webp and b/doc/qtcreator/images/qtcreator-preferences-android.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-axivion-general.webp b/doc/qtcreator/images/qtcreator-preferences-axivion-general.webp deleted file mode 100644 index 3089b3378f3..00000000000 Binary files a/doc/qtcreator/images/qtcreator-preferences-axivion-general.webp and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-preferences-axivion-path-mapping.webp b/doc/qtcreator/images/qtcreator-preferences-axivion-path-mapping.webp deleted file mode 100644 index 48bab0b659b..00000000000 Binary files a/doc/qtcreator/images/qtcreator-preferences-axivion-path-mapping.webp and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-preferences-axivion.webp b/doc/qtcreator/images/qtcreator-preferences-axivion.webp new file mode 100644 index 00000000000..e2175144515 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-preferences-axivion.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-debugger-cdb.webp b/doc/qtcreator/images/qtcreator-preferences-debugger-cdb.webp new file mode 100644 index 00000000000..fe064046739 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-preferences-debugger-cdb.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-extensions.webp b/doc/qtcreator/images/qtcreator-preferences-extensions.webp index e66b43c0e17..3d4a259ee5c 100644 Binary files a/doc/qtcreator/images/qtcreator-preferences-extensions.webp and b/doc/qtcreator/images/qtcreator-preferences-extensions.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-kits.webp b/doc/qtcreator/images/qtcreator-preferences-kits.webp new file mode 100644 index 00000000000..95e7b44990d Binary files /dev/null and b/doc/qtcreator/images/qtcreator-preferences-kits.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-language-client-qmlls.webp b/doc/qtcreator/images/qtcreator-preferences-language-client-qmlls.webp new file mode 100644 index 00000000000..4c7aa6653b9 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-preferences-language-client-qmlls.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-texteditor-behavior-indentation.webp b/doc/qtcreator/images/qtcreator-preferences-texteditor-behavior-indentation.webp new file mode 100644 index 00000000000..e97c7ac2b11 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-preferences-texteditor-behavior-indentation.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-texteditor-behavior.webp b/doc/qtcreator/images/qtcreator-preferences-texteditor-behavior.webp index 722d4424e80..b6936093343 100644 Binary files a/doc/qtcreator/images/qtcreator-preferences-texteditor-behavior.webp and b/doc/qtcreator/images/qtcreator-preferences-texteditor-behavior.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-windows-app-sdk.webp b/doc/qtcreator/images/qtcreator-preferences-windows-app-sdk.webp new file mode 100644 index 00000000000..605f45eb2f0 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-preferences-windows-app-sdk.webp differ diff --git a/doc/qtcreator/images/qtcreator-projects-environment.webp b/doc/qtcreator/images/qtcreator-projects-environment.webp index 6b33d698522..81d338e4294 100644 Binary files a/doc/qtcreator/images/qtcreator-projects-environment.webp and b/doc/qtcreator/images/qtcreator-projects-environment.webp differ diff --git a/doc/qtcreator/images/qtcreator-projects-settings-build-coco.webp b/doc/qtcreator/images/qtcreator-projects-settings-build-coco.webp new file mode 100644 index 00000000000..3ee978ac5f7 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-projects-settings-build-coco.webp differ diff --git a/doc/qtcreator/images/qtcreator-projects-settings-coco.webp b/doc/qtcreator/images/qtcreator-projects-settings-coco.webp new file mode 100644 index 00000000000..1bed04395fa Binary files /dev/null and b/doc/qtcreator/images/qtcreator-projects-settings-coco.webp differ diff --git a/doc/qtcreator/images/qtcreator-projects-settings-cpp-file-naming.webp b/doc/qtcreator/images/qtcreator-projects-settings-cpp-file-naming.webp index 9e222cc6e91..d503f164263 100644 Binary files a/doc/qtcreator/images/qtcreator-projects-settings-cpp-file-naming.webp and b/doc/qtcreator/images/qtcreator-projects-settings-cpp-file-naming.webp differ diff --git a/doc/qtcreator/images/qtcreator-projects-settings-language-server.webp b/doc/qtcreator/images/qtcreator-projects-settings-language-server.webp index 28dbf53ddd6..67f4365f79f 100644 Binary files a/doc/qtcreator/images/qtcreator-projects-settings-language-server.webp and b/doc/qtcreator/images/qtcreator-projects-settings-language-server.webp differ diff --git a/doc/qtcreator/images/qtcreator-qml-js-editing.webp b/doc/qtcreator/images/qtcreator-qml-js-editing.webp index f9475414f54..76aa256b56d 100644 Binary files a/doc/qtcreator/images/qtcreator-qml-js-editing.webp and b/doc/qtcreator/images/qtcreator-qml-js-editing.webp differ diff --git a/doc/qtcreator/src/analyze/creator-axivion.qdoc b/doc/qtcreator/src/analyze/creator-axivion.qdoc index b80a4c55708..df3bc5be780 100644 --- a/doc/qtcreator/src/analyze/creator-axivion.qdoc +++ b/doc/qtcreator/src/analyze/creator-axivion.qdoc @@ -151,26 +151,27 @@ You can connect to an Axivion dashboard server and map dashboard projects to local projects. + \note Enable the Axivion plugin to use it. + \section1 Connecting to a Dashboard Server To connect to an Axivion dashboard server: - \list - \li Go to \preferences > \uicontrol Axivion > \uicontrol General. - \image qtcreator-preferences-axivion-general.webp {General tab in Axivion Preferences} + \list 1 + \li Go to \preferences > \uicontrol Analyzer > \uicontrol Axivion. + \image qtcreator-preferences-axivion.webp {Axivion tab in Analyzer Preferences} \li Select \uicontrol Add to add a new connection to an Axivion - dashboard server. - \li Select \uicontrol Edit to modify an existing connection to - an Axivion dashboard server. + dashboard server or \uicontrol Edit to change an existing connection: \image qtcreator-edit-dashboard-configuration.webp {Edit Dashboard Configuration dialog} \list \li In \uicontrol {Dashboard URL}, enter the URL of the server. \li In \uicontrol Username, enter the username to access the server. \endlist - \li Select \uicontrol Remove to remove the current selected connection - to an Axivion dashboard server. \endlist + Select \uicontrol Remove to remove the current selected connection to an + Axivion dashboard server. + The first time you access the server, you must enter the password that matches the username. It is stored safely in your keychain that is provided by the OS for later use. @@ -186,13 +187,12 @@ To map dashboard projects to local projects: \list 1 - \li Go to \preferences > \uicontrol Axivion > \uicontrol {Path Mapping}. - \image qtcreator-preferences-axivion-path-mapping.webp {Path Mapping tab in Axivion Preferences} + \li In \uicontrol {Path Mapping}, select \uicontrol Add. \li In \uicontrol {Project name}, enter the project name on the dashboard. - \li In \uicontrol {Local path}, enter the path to the project on the - computer. \li In \uicontrol {Analysis path}, enter the path to the analysis of a subproject. You need this only to map analyses of subprojects. + \li In \uicontrol {Local path}, enter the path to the project on the + computer. \endlist \sa {Enable and disable plugins}, {View Axivion static code analysis results} diff --git a/doc/qtcreator/src/analyze/creator-coco.qdoc b/doc/qtcreator/src/analyze/creator-coco.qdoc index 4b1337e1238..6ed56a2029f 100644 --- a/doc/qtcreator/src/analyze/creator-coco.qdoc +++ b/doc/qtcreator/src/analyze/creator-coco.qdoc @@ -1,34 +1,157 @@ -// Copyright (C) 2022 The Qt Company Ltd. +// Copyright (C) 2025 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! \page creator-coco.html + \previouspage creator-reference.html + + \ingroup creator-reference-analyzer + + \title Coco + + \brief Measure and analyze the code coverage of tests. + + With Coco, you can measure and analyze the code coverage of tests. You can + set up a project for code coverage and display the coverage in \QC. + + To use the plugin, you must download and install Coco version 6.0 or later. + + \note Enable the Coco plugin to use it. + + \section1 Set Coco installation directory + + Go to \preferences > \uicontrol Coco to set the Coco installation directory. + Usually, you don't need to change the default value. + + \section1 Create a build configuration for Coco + + To create a build configuration for \QC projects that you build with qmake or + CMake: + + \list 1 + \li Go to \uicontrol Projects > \uicontrol {Build & Run} > + \uicontrol Build > \uicontrol {Build Settings}. + \li Select an existing build configuration, such as \e Debug, and then + select \uicontrol Clone to clone it with a new name, such as + \e DebugCoverage. + \li Configure the clone for use with Coco. + \endlist + + Do not switch back and forth between coverage and normal builds using the + same build configuration. + + \uicontrol {Build Settings} > \uicontrol {Build Steps} > + \uicontrol {Coco code coverage} shows whether code coverage is on or + off for the build configuration. Select \uicontrol {Enable Coverage} + or \uicontrol {Disable Coverage} to turn on or off code coverage. + + \image qtcreator-projects-settings-build-coco.webp {Setting code coverage from a build step} + + \section1 Set code coverage for a project + + To specify code coverage settings for a project, go to \uicontrol Projects > + \uicontrol {Project Settings} > \uicontrol {Coco Code Coverage}. + + \image qtcreator-projects-settings-coco.webp {Coco Code Coverage settings} + + \table + \header + \li Setting + \li Purpose + \row + \li \uicontrol {Enable code coverage for build configuration } + \li Turns on and off code coverage for a build configuration. + \row + \li \uicontrol {CoverageScanner Options} + \li Code coverage options (optional). + \row + \li \uicontrol {Exclude File} + \li Excludes a file from instrumentation. + \row + \li \uicontrol {Exclude Directory} + \li Excludes a directory from instrumentation. + \row + \li \uicontrol Override + \li Enter commands to add them to the end of the settings file. Use this + option when the usual configuration flags are not enough. + \row + \li \uicontrol {Changed Build Settings} + \li Lists the changed project build settings. + \row + \li \uicontrol Revert + \li Reloads the coverage settings from the current settings file. + \row + \li \uicontrol Save and \uicontrol {Save & Re-configure} + \li Write the settings to the settings file and reconfigure the project + if necessary. + \endtable + + If code coverage is on, the plugin generates a \e {settings} file that the + build tool reads first. It changes the build process to use Coco compiler + wrappers instead of the original compiler. The settings file is always + located in the root directory of the project sources. It also has the + coverage flags and possible overrides. Check it into version control to + preserve the settings. + + \section2 qmake projects + + For qmake projects, the settings file is the \c {cocoplugin.prf} + \e {feature file}. + + For a command-line build, run \c {qmake} with the additional options: + + \badcode + CONFIG+=cocoplugin COCOPATH= + \endcode + + Also, set the environment variable \c {QMAKEFEATURES} to the directory where + \c {cocoplugin.prf} is located. + + \section2 CMake projects + + For CMake projects, the settings file is the \c {cocoplugin.cmake} CMake + cache preload script. Also, the \e {compiler files} \c {cocoplugin-gcc.cmake}, + \c {cocoplugin-clang.cmake}, and \c {cocoplugin-visualstudio.cmake} are created + in the same directory. They are needed for a command-line build. + + To build the project from the command line (when compiling with GCC), enter: + + \badcode + cmake -C /cocoplugin-gcc.cmake + \endcode + + The file \c {cocoplugin-gcc.cmake} includes \c {cocoplugin.cmake}. + + If you use some other compiler than GCC, Clang, or MSVC, modify one + of the compiler files for that compiler. + + \sa {Configure projects for building}, {Enable and disable plugins}, + {View code coverage reports from Coco}, {Font & Colors}, {Analyzing Code} +*/ + +/*! + \page creator-how-to-view-code-coverage-with-coco.html \previouspage creator-how-tos.html \ingroup creator-how-to-analyze - \title Check code coverage - - With Coco CoverageBrowser, you can analyze the test coverage by loading an - instrumentation database (a .csmes file), which was generated by Coco - CoverageScanner. The experimental Coco plugin is currently supported only on - Windows, with Coco version 6.0, or later. - - To use the plugin, you must download and install Coco. + \title View code coverage reports from Coco \note Enable the Coco plugin to use it. - \section1 Configure Coco + With Coco CoverageBrowser, you can analyze the test coverage by + loading an instrumentation database (a \c .csmes file), which was generated by + Coco CoverageScanner. + + To measure and check code coverage: \list 1 \li Go to \uicontrol Analyze > \uicontrol {Squish Coco}. \image qtcreator-coco.png {Coco CoverageBrowser and CSMes file} - \li In \uicontrol {CoverageBrowser}, enter the path to the Coco - coverage browser to use for analyzing a .csmes file. \li In \uicontrol CSMes, select the instrumentation database to load. \li Select \uicontrol Open to start CoverageBrowser. \li In CoverageBrowser, go to \uicontrol File > - \uicontrol {Load Execution Report} and select the .csexe for the + \uicontrol {Load Execution Report} and select the \c .csexe file for the coverage scan. \image coco-coveragebrowser-load-execution-report.png {Load Execution Report dialog} \li To keep the execution report, clear @@ -39,7 +162,7 @@ after the code in \uicontrol Edit mode. You can change the fonts and colors used for different types of results. - \section1 Changing Fonts and Colors + \section1 Change fonts and colors To change the default fonts and colors, go to \preferences > \uicontrol {Text Editor} > \uicontrol {Font & Colors}. @@ -59,6 +182,5 @@ \li Implicit Manual Coverage Validation \endlist - \sa {Enable and disable plugins}, {Analyze}{How To: Analyze}, {Analyzers}, - {Font & Colors}, {Analyzing Code} + \sa {Enable and disable plugins}, {Font & Colors}, {Analyzing Code}, {Coco} */ diff --git a/doc/qtcreator/src/android/androiddev.qdoc b/doc/qtcreator/src/android/androiddev.qdoc index 42bf54b8b44..930abd1d675 100644 --- a/doc/qtcreator/src/android/androiddev.qdoc +++ b/doc/qtcreator/src/android/androiddev.qdoc @@ -69,7 +69,7 @@ To set up the development environment for Android: \list 1 - \li Go to \preferences > \uicontrol Devices > \uicontrol Android. + \li Go to \preferences > \uicontrol SDKs > \uicontrol Android. \image qtcreator-preferences-android.webp {Android preferences} \li In \uicontrol {JDK location}, set the path to the JDK. \QC checks the JDK installation and reports errors. @@ -157,11 +157,12 @@ \previouspage creator-how-tos.html \ingroup creator-how-to-android + \ingroup creator-how-to-sdks \title Manage Android NDK packages To view the \l{Android NDK} versions that \QC installed, go to \preferences > - \uicontrol Devices > \uicontrol Android. + \uicontrol SDKs > \uicontrol Android. \image qtcreator-preferences-android.webp {Android preferences} @@ -195,6 +196,7 @@ \previouspage creator-how-tos.html \ingroup creator-how-to-android + \ingroup creator-how-to-sdks \title Manage Android SDK packages @@ -205,7 +207,7 @@ \c sdkmanager for advanced SDK management. To view the installed Android SDK packages, select \preferences > - \uicontrol Devices > \uicontrol Android > \uicontrol {SDK Manager}. + \uicontrol SDKs > \uicontrol Android > \uicontrol {SDK Manager}. \image qtcreator-android-sdk-manager.webp {Android SDK Manager} diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc index fc0318d3d55..8257f87708c 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc @@ -190,7 +190,7 @@ The kit also specifies the CMake generator that is used for producing project files for \QC and the initial configuration parameters: - \image qtcreator-kits-cmake.png {Kits preferences} + \image qtcreator-preferences-kits.webp {Kits preferences} \sa {Build applications on remote Linux devices}, {Build on Docker devices}, {Build with CMake}{How To: Build with CMake}, diff --git a/doc/qtcreator/src/creator-how-to-set-up-winappsdk.qdoc b/doc/qtcreator/src/creator-how-to-set-up-winappsdk.qdoc new file mode 100644 index 00000000000..a356f1b75ef --- /dev/null +++ b/doc/qtcreator/src/creator-how-to-set-up-winappsdk.qdoc @@ -0,0 +1,35 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +/*! + \page creator-how-to-manage-winappsdk.html + \previouspage creator-how-tos.html + + \ingroup creator-how-to-sdks + + \title Manage Windows App SDK packages + + Use the components and tools of the \l{Latest Windows App SDK downloads} + {Windows App SDK} to develop applications for the Windows desktop. The + Windows App SDK complements the Windows SDK and existing desktop Windows + application types, such as .NET. + + Create a folder for downloading the Windows App SDK, and then use + \l{Available NuGet Distribution Versions}{NuGet} to download and + install the SDK. + + To download and install Windows App SDK: + + \list 1 + \li Go to \preferences > \uicontrol SDKs > \uicontrol {Windows App SDK}. + \image qtcreator-preferences-windows-app-sdk.webp {Win App SDK Preferences} + \li In \uicontrol {Download location}, specify the path to a folder where + NuGet and the SDK will be downloaded. + \li In \uicontrol {NuGet location}, specify the path to NuGet, or + select \uicontrol {Download NuGet} to automatically download and + install NuGet. + \li In \uicontrol {Windows App SDK location} specify the directory where + the SDK is installed, or select \uicontrol {Download WindowsAppSDK} + to automatically download and install the SDK with NuGet. + \endlist +*/ diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdoc index bee1cec4302..71fc6cbf414 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdoc @@ -11,9 +11,8 @@ \brief Customize debug views and map source paths. - To specify settings for managing debugger processes, go to \preferences > - \uicontrol Debugger. In the \uicontrol General tab, you can specify settings - that are common to all debuggers. + To set general preferences that are common to all debuggers, go to + \preferences > \uicontrol Debugger > \uicontrol General. \image qtcreator-preferences-debugger-general.webp {Debugger General preferences} @@ -23,15 +22,15 @@ You can view debug output in the \l {Debugger Log} view. However, in some Linux distributions, such as Arch Linux, debug output is sent to the system log. To override this behavior, select - the \uicontrol {Force logging to console} check box. This sets + \uicontrol {Force logging to console}. This sets \c QT_LOGGING_TO_CONSOLE=1 in the environment of the debugged application, which effectively prevents storing debug output in system logs. \section1 Breakpoints - To use a full absolute path in breakpoints, select the - \uicontrol {Set breakpoints using a full absolute path} check box. + To use a full absolute path in breakpoints, select + \uicontrol {Set breakpoints using a full absolute path}. GDB and CDB enable setting breakpoints on source lines for which no code was generated. In such situations, the breakpoint is shifted to the next @@ -46,12 +45,11 @@ When using CDB as backend, you can specify that the debugger should break on specific events, such as C++ exceptions, thread creation or exit, loading or - unloading \l{Viewing Modules}{application modules}, or particular output. - Select the appropriate check boxes in the \uicontrol CDB > - \uicontrol {Break on} group. To disable first-chance break on access - violation exceptions, select the \uicontrol {Ignore first chance access - violations} check box. The second occurrence of an access violation will - break into the debugger. + unloading \l{Viewing Modules}{application modules}, or particular output by + selecting preferences in \uicontrol CDB > \uicontrol {Break on}. To disable + first-chance break on access violation exceptions, select + \uicontrol {Ignore first chance access violations}. + The second occurrence of an access violation will break into the debugger. You can automatically add breakpoints on some functions to catch error and warning messages. For more information, see \l{CDB} and \l{GDB}. @@ -76,9 +74,9 @@ \list 1 \li In \uicontrol {Source Paths Mapping}, select \uicontrol Add to add an entry to the path list. - \li In the \uicontrol {Source path} field, specify the source path in + \li In \uicontrol {Source path}, specify the source path in the debug information of the executable as reported by the debugger. - \li In the \uicontrol {Target path} field, specify the actual location + \li In \uicontrol {Target path}, specify the actual location of the source tree on the local machine. \endlist @@ -95,7 +93,7 @@ \brief Manage the GDB process. - To specify settings for managing the GDB process, go to \preferences > + To specify preferences for managing the GDB process, go to \preferences > \uicontrol Debugger > \uicontrol GDB. \image qtcreator-preferences-debugger-gdb.webp {GDB preferences} @@ -104,7 +102,7 @@ \table \header - \li Setting + \li Preference \li Value \row \li \uicontrol {GDB timeout} @@ -158,11 +156,10 @@ To execute GDB commands after GDB has been started, but before the debugged application is started or attached, and before the debugging helpers are - initialized, enter them in the \uicontrol {Additional Startup Commands} - field. + initialized, enter them in \uicontrol {Additional Startup Commands}. To execute GDB commands after GDB has successfully attached to remote - targets, enter them in the \uicontrol {Additional Attach Commands} field. + targets, enter them in \uicontrol {Additional Attach Commands}. You can add commands to further set up the target here, such as \c {monitor reset} or \c {load}. @@ -172,16 +169,16 @@ To execute arbitrary Python scripts, use \c {python execfile('/path/to/script.py')}. - \section1 Extended GDB Settings + \section1 Extended GDB Preferences - The settings in the \uicontrol Extended group give access to advanced + The preferences in the \uicontrol Extended group give access to advanced or experimental functions of GDB. Enabling them may negatively impact your debugging experience, so use them with care. \table \header - \li Setting + \li Preference \li Value \row \li \uicontrol {Use asynchronous mode to control the inferior} @@ -225,16 +222,16 @@ \brief Manage the CDB process. - To specify settings for managing the CDB process, go to \preferences > + To set preferences for managing the CDB process, go to \preferences > \uicontrol Debugger > \uicontrol CDB. - \image qtcreator-cdb-options.png "CDB preferences" + \image qtcreator-preferences-debugger-cdb.webp {CDB preferences} The following table summarizes the preferences. \table \header - \li Setting + \li Preference \li Value \row \li \uicontrol {Additional arguments} @@ -270,7 +267,13 @@ \uicontrol Expressions views. For more information, see \l{Debugging Helper Implementation}. \row - \li \uicontrol {Break on} + \li \uicontrol {Enable heap debugging} + \li Allocates memory using the debug heap rather than the normal heap. + The debug heap has checks that help diagnose heap related bugs, but + negatively impacts performance when allocating memory in the debugged + process. + \row + \li \uicontrol {Break On} \li Whether the debugger should break on C++ exceptions, on thread creation or exit, on loading or unloading the specified \l{Viewing Modules}{application modules}, or on the specified output. @@ -313,7 +316,7 @@ To use the Source Server infrastructure for fetching missing source files directly from version control or the web, enter the following string in - the \uicontrol {Source Paths} field: \c srv*. + \uicontrol {Source Paths}: \c srv*. \sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger} */ diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc index b59003193aa..0ba2c4841db 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc @@ -65,7 +65,7 @@ \section1 GDB Versions Use GDB 7.5, or later, with the Python scripting extension and Python version - 3.5, or later. + 3.7, or later. For remote debugging using GDB and GDB server, the minimum supported version of GDB server on the target \l{glossary-device}{device} is 7.0. diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc index e2ffebe5bad..d86cdf7a1db 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc @@ -32,7 +32,7 @@ another kit. To specify the debugger and compiler to use for each kit, go to \preferences > \uicontrol Kits. - \image qtcreator-kits.png {Kits preferences} + \image qtcreator-preferences-kits.webp {Kits preferences} You need to set up the debugger only if the automatic setup fails because the debugger is missing (for example, you must install the CDB @@ -1228,7 +1228,7 @@ for the specified modules, go to \preferences > \uicontrol Debugger > \uicontrol CDB. - \image qtcreator-cdb-options.png {CDB tab in Debugger preferences} + \image qtcreator-preferences-debugger-cdb.webp {CDB tab in Debugger preferences} For more information, see \l{CDB}. @@ -1728,7 +1728,7 @@ selecting \preferences > \uicontrol Debugger > \uicontrol CDB > \uicontrol {Use Python dumper}. - \image qtcreator-cdb-options.png {CDB preferences} + \image qtcreator-preferences-debugger-cdb.webp {CDB preferences} The following sections describe some of the widely-used Dumper classes and members specified in \c qtcreator\share\qtcreator\debugger\dumper.py. diff --git a/doc/qtcreator/src/editors/creator-code-indentation.qdoc b/doc/qtcreator/src/editors/creator-code-indentation.qdoc index 6b719908781..7438cffeb45 100644 --- a/doc/qtcreator/src/editors/creator-code-indentation.qdoc +++ b/doc/qtcreator/src/editors/creator-code-indentation.qdoc @@ -16,12 +16,29 @@ When you type text or code, it is indented automatically according to the selected text editor or code style preferences. Select a block to indent it when - you select \key Tab. Select \key {Shift+Tab} to decrease the indentation. You - can disable automatic indentation. + you select \key Tab. Select \key {Shift+Tab} to decrease the indentation. - To fix the indentation in the file currently open in the editor, - select options in the \uicontrol Edit > \uicontrol Advanced menu - or use \l{Keyboard Shortcuts}{keyboard shortcuts}: + \section1 Don't detect indentation settings + + To turn off the automatic detection of indentation settings, go to + \preferences > \uicontrol {Text Editor} > \uicontrol Behavior + and clear \uicontrol {Auto detect}. + + \image qtcreator-preferences-texteditor-behavior-indentation.webp {Text Editor Behavior indentation preferences} + + \section1 Fix indentation in an open file + + To fix the indentation in the file currently open in the editor: + + \list + \li On the editor toolbar, select \uicontrol {Spaces}, and then select + \uicontrol {Auto-indent Selection} to automatically indent the + selected text using the current settings. + \li Go to \uicontrol Edit > \uicontrol Advanced, and select an + indentation option or use \l{Keyboard Shortcuts}{keyboard shortcuts}. + \endlist + + \section2 Indentation options \list \li To automatically indent the highlighted text, select @@ -40,20 +57,20 @@ select \uicontrol {Clean Whitespace}. \endlist - \section1 Automatically fix indentation + \section1 Automatically fix indentation upon file save To automatically fix indentation according to the indentation settings - when you save the file, select \preferences > \uicontrol {Text Editor} > - \uicontrol Behavior > \uicontrol {Clean whitespace} > + when you save the file, go to \preferences > \uicontrol {Text Editor} > + \uicontrol Behavior > \uicontrol {Clean whitespace} and select \uicontrol {Clean indentation}. Select - the \uicontrol {Skip clean whitespace for file types} check box to + \uicontrol {Skip clean whitespace for file types} to exclude the specified file types. \image qtcreator-preferences-texteditor-behavior.webp {Text Editor Behavior preferences} \section1 Show whitespace in editor - To visualize whitespace in the editor, select \preferences > + To visualize whitespace in the editor, go to \preferences > \uicontrol {Text Editor} > \uicontrol Display > \uicontrol {Visualize whitespace}. @@ -66,13 +83,13 @@ \section1 Display right margin To help you keep line length at a particular number of characters, set the - number of characters in the \uicontrol {Display right margin at column} - field. To use a different color for the margin area, select the - \uicontrol {Tint whole margin area} check box. Clear the check box to show + number of characters in \uicontrol {Display right margin at column}. + To use a different color for the margin area, select + \uicontrol {Tint whole margin area}. Clear it to show the margin as a vertical line. - To use a context-specific margin when available, select the - \uicontrol {Use context-specific margin} check box. + To use a context-specific margin when available, select + \uicontrol {Use context-specific margin}. \if defined(qtcreator) Then, use the \l{ClangFormat Style Options}{ClangFormat} \c ColumnLimit option to set the margin, for example. diff --git a/doc/qtcreator/src/editors/creator-code-syntax.qdoc b/doc/qtcreator/src/editors/creator-code-syntax.qdoc index 000717c6a95..75d81c1e08c 100644 --- a/doc/qtcreator/src/editors/creator-code-syntax.qdoc +++ b/doc/qtcreator/src/editors/creator-code-syntax.qdoc @@ -45,10 +45,15 @@ annotated. \endif - When writing QML or JavaScript code, the annotations may have error codes - listed in \l{JavaScript and QML Error Codes}. + When writing QML or JavaScript code, the annotations may have error codes. - \image qml-syntax-check.png + If you turn on \QMLLS for a project, it uses \c {qmllint} to check QML and + JavaScript code. For more information, see \l {qmllint Reference}. + + If you turn off \QMLLS, \QC uses a static analyzer. For more information, + see \l{JavaScript and QML Error Codes}. + + \image qml-syntax-check.png {Selecting checks for the static analyzer} \section1 Manage messages @@ -108,9 +113,14 @@ View the results in the \uicontrol QML and \uicontrol {QML Analysis} filters in \l Issues. + \note If you turn on \QMLLS for a project, it uses \l {qmllint Reference} + {qmllint} to check QML and JavaScript code and to generate warnings, so the + error codes and messages differ from those in + \l{JavaScript and QML Error Codes}. + \section1 Enabling and Disabling Messages - To enable and disable QML and JavaScript messages: + To enable and disable QML and JavaScript messages of the static analyzer: \list 1 \li Go to \preferences > \uicontrol {Qt Quick} > @@ -119,7 +129,7 @@ \image qtcreator-preferences-qtquick-qmljs-editing.webp {QML/JS Editing tab in Qt Quick preferences} \li In \uicontrol Enabled, select the messages that you want to see. \li To disable messages for non-Qt Quick UI files, select them in - \uicontrol {Disable messages for non Qt Quick UI}. You cannot + \uicontrol {Disabled for non Qt Quick UI}. You cannot enable messages just for non-Qt Quick UI files. \endlist diff --git a/doc/qtcreator/src/editors/creator-only/creator-aiassistant.qdoc b/doc/qtcreator/src/editors/creator-only/creator-aiassistant.qdoc index 9a3ee99dbbf..2c8406fba5e 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-aiassistant.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-aiassistant.qdoc @@ -29,16 +29,36 @@ \note Install and load the Qt AI Assistant extension to use it. + \section1 Install Qt AI Assistant + + To load the Qt AI Assistant extension from the web: + + \list 1 + \li Go to \uicontrol Extensions, and select \inlineimage icons/settings.png. + \image qtcreator-preferences-extensions.webp {Extensions in Preferences} + \li Select \uicontrol {Use external repository}. + \li Select \uicontrol {OK}. + \li Back in \uicontrol Extensions, select \uicontrol {AI Assistant}, and + then select \uicontrol Install. + \endlist + \section1 Connect to an LLM You can connect to the following LLMs: \list - \li Meta Code Llama 13B (running in a cloud deployment of your choice) - \li Meta Llama 3.1 70B (running in a cloud deployment of your choice) + \li Meta Code Llama 13B QML (for Qt 6, running in a cloud deployment + of your choice) + \li Meta Code Llama 13B (for Qt 5, running in a cloud deployment of your + choice) + \li Meta Code Llama 13 QML through Ollama (running locally on your + computer) + \li Meta Llama 3.3 70B QML (running in a cloud deployment of your choice) \li Anthropic Claude 3.5 Sonnet (provided as subscription-based service by Anthropic) + \li OpenAI GPT-4o (provided as subscription-based service by OpenAI) \li Meta Code Llama 7B through Ollama (running locally on your computer) + \li BigCode StarCoder2 through Ollama (running locally on your computer) \endlist To connect to an LLM: diff --git a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc index 7fc22f4b0e8..c9cb12e30ef 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc @@ -80,14 +80,11 @@ To add language servers, go to \preferences > \uicontrol {Language Client} and select \uicontrol Add. - \image qtcreator-language-client-options-java.png {Java language server preferences} + \image qtcreator-preferences-language-client-qmlls.webp {Language Client General preferences} To enable a language server, select the checkbox next to the language server name and set server preferences. - To configure \l{Configure \QMLLS}{\QMLLS}, go to - \preferences > \uicontrol {Qt Quick} > \uicontrol {QML/JS Editing}. - To remove language servers from the list, select \uicontrol Delete. \section1 Updating Python Language Server @@ -240,15 +237,31 @@ Since Qt 6.4, \QMLLS offers code completion and issues warnings for QML. - To turn off \QMLLS, go to \preferences > \uicontrol {Qt Quick} > - \uicontrol {QML/JS Editing} and clear \uicontrol {Turn on}. + To set preferences for \QMLLS, go to \preferences > + \uicontrol {Language Client} > \uicontrol General and + select \uicontrol {\QMLLS}. + + \image qtcreator-preferences-language-client-qmlls.webp {QML Language Server in Language Client preferences} + + \section1 Turn off \QMLLS for all projects + + To globally turn off \QMLLS, clear the \uicontrol {\QMLLS} checkbox. + + For more information about how to turn on and off language servers for a + particular project, see \l{Configure language servers for projects}. + + \section1 Use advanced features By default, \QMLLS issues warning messages and provides code completion, while the embedded code model handles advanced features, such as renaming - symbols and finding usages. To disable the embedded code model and use - \QMLLS for everything, select \uicontrol {Use advanced features}. + symbols and finding usages. - Also, \QC tries to use \QMLLS shipped with the Qt version in your current + To disable the embedded code model and use \QMLLS for everything, select + \uicontrol {Use advanced features}. + + \section1 Select \QMLLS version + + \QC tries to use \QMLLS shipped with the Qt version in your current \l{Kits}{kit}. To override that behavior and always use \QMLLS of the highest registered Qt version, select \uicontrol {Use from latest Qt version}. @@ -256,7 +269,7 @@ To use older \QMLLS versions, select \uicontrol{Allow versions below Qt 6.8}. - \image qtcreator-qml-js-editing.webp {QML/JS Editing preferences} + \section1 Automatically configure new CMake projects To automatically configure new CMake projects, select \uicontrol {Create .qmlls.ini files for new projects}. @@ -330,7 +343,23 @@ \ingroup creator-how-to-lsp \ingroup creator-how-to-projects-configure - \title Configure language server workspace + \title Configure language servers for projects + + To configure language servers for the current project, go to + \uicontrol Projects > \uicontrol {Project Settings} > + \uicontrol {Language Server}. + + \image qtcreator-projects-settings-language-server.webp {Language Server settings for a project} + + To add language servers and change their preferences, select + \uicontrol {Global settings}. + + \section1 Turn on and off language servers + + To turn on and off language servers, select \uicontrol Enabled or + \uicontrol Disabled in \uicontrol {Project Specific Language Servers}. + + \section1 Configure language server workspace The language client sends the contents of the \uicontrol {Workspace Configuration} field as a JSON file to all language @@ -338,18 +367,8 @@ JSON file must be valid JSON. The available settings depend on the language server. - To configure the language server workspace for the current project: - - \list 1 - \li Go to \uicontrol Projects > \uicontrol {Project Settings} > - \uicontrol {Language Server}. - \image qtcreator-projects-settings-language-server.webp {Language Server settings for a project} - \li In \uicontrol {Workspace Configuration}, specify language server - settings using valid JSON format. - \endlist - - To add language servers and change their preferences, go to - \uicontrol {Global settings}. + In \uicontrol {Workspace Configuration}, specify language server settings + using valid JSON format. \sa {Manage Language Servers}{How To: Manage Language Servers}, {Language Servers}, {Configuring Projects} diff --git a/doc/qtcreator/src/editors/creator-preferences-text-editor-behavior.qdoc b/doc/qtcreator/src/editors/creator-preferences-text-editor-behavior.qdoc index 09b54b3a416..f1c958b4725 100644 --- a/doc/qtcreator/src/editors/creator-preferences-text-editor-behavior.qdoc +++ b/doc/qtcreator/src/editors/creator-preferences-text-editor-behavior.qdoc @@ -21,7 +21,7 @@ QML code (such as Python code files), select \preferences > \uicontrol {Text Editor} > \uicontrol Behavior. - \image qtcreator-preferences-texteditor-behavior.webp {Text Editor Behavior preferences} + \image qtcreator-preferences-texteditor-behavior-indentation.webp {Text Editor Behavior preferences} You can specify how to interpret the \key Tab and \key Backspace key presses and how to align continuation lines. diff --git a/doc/qtcreator/src/external-resources/external-resources.qdoc b/doc/qtcreator/src/external-resources/external-resources.qdoc index af0d7ba78d5..bfa51524ba0 100644 --- a/doc/qtcreator/src/external-resources/external-resources.qdoc +++ b/doc/qtcreator/src/external-resources/external-resources.qdoc @@ -133,6 +133,14 @@ \externalpage http://developer.android.com/guide/components/fundamentals.html \title Android Application Fundamentals */ +/*! + \externalpage https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads + \title Latest Windows App SDK downloads +*/ +/*! + \externalpage https://www.nuget.org/downloads + \title Available NuGet Distribution Versions +*/ /*! \externalpage https://doc.qt.io/qt/qtquicktest-index.html#executing-c-before-qml-tests \title Executing C++ Before QML Tests diff --git a/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc b/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc index 79e78bba7de..d9296c47f98 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc @@ -141,6 +141,12 @@ \generatelist creator-how-to-remote-linux + \section2 SDKs + + Manage SDKs for application development for different platforms. + + \generatelist creator-how-to-sdks + \section2 VxWorks Build \l {Qt for VxWorks}, and create VxWorks build and run kits. @@ -589,6 +595,11 @@ \li \c %$VARIABLE%: Contents of environment variable \c{VARIABLE}. \endlist + + In addition, placeholders in the form %{..} are replaced by the + value of the corresponding \QC variable. + + \sa {Use \QC variables} */ /*! diff --git a/doc/qtcreator/src/ios/creator-ios-dev.qdoc b/doc/qtcreator/src/ios/creator-ios-dev.qdoc index e465b035617..168878cb65f 100644 --- a/doc/qtcreator/src/ios/creator-ios-dev.qdoc +++ b/doc/qtcreator/src/ios/creator-ios-dev.qdoc @@ -23,10 +23,8 @@ \QC detects iOS devices, and you can deploy and run applications on them. - For iOS devices with iOS 16 or earlier, \QC also supports accessing the application - output, debugging, and profiling. However, these features are not supported for - physical devices with iOS 17 or later because of limitations of the Apple tool for - accessing these devices. + Only C++ debugging is supported for devices with iOS 17 and later, and it + requires Xcode 16 or later. \section1 Specifying Supported iOS Versions diff --git a/doc/qtcreator/src/linux-mobile/b2qtdev.qdoc b/doc/qtcreator/src/linux-mobile/b2qtdev.qdoc index 04dceb49160..83c74237787 100644 --- a/doc/qtcreator/src/linux-mobile/b2qtdev.qdoc +++ b/doc/qtcreator/src/linux-mobile/b2qtdev.qdoc @@ -68,7 +68,9 @@ \li Go to \preferences > \uicontrol Kits. \li Select \uicontrol Add to add a kit for building for the device. \li Select the Qt version, compiler, and device that you added above. - \li In \uicontrol {Run device type}, select \uicontrol {Boot2Qt Device}. + \li In \uicontrol {Run device}, select \uicontrol {Boot2Qt Device} in + \uicontrol {Type}, and then select the actual device to run on in + \uicontrol {Device}. \li To specify build settings: \list 1 \li Open a project for an application you want to develop for the 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 index 041ba3dde53..affd01fc93d 100644 --- 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 @@ -35,8 +35,9 @@ \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 In \uicontrol {Type} in \uicontrol {Run device} and + \uicontrol {Build device}, select \uicontrol {\1}. Select + the actual device to run and build on in \uicontrol {Device}. \li To specify build settings: diff --git a/doc/qtcreator/src/linux-mobile/linuxdev.qdoc b/doc/qtcreator/src/linux-mobile/linuxdev.qdoc index d92e9a82441..de804c8daa5 100644 --- a/doc/qtcreator/src/linux-mobile/linuxdev.qdoc +++ b/doc/qtcreator/src/linux-mobile/linuxdev.qdoc @@ -92,8 +92,9 @@ \li Select the Qt version, compiler, and device that you added above. - \li In \uicontrol {Run device type}, select - \uicontrol {Remote Linux Device}. + \li In \uicontrol {Run device}, select \uicontrol {Remote Linux Device} + in \uicontrol {Type}, and then select the actual device to run on in + \uicontrol {Device}. \li To specify build settings: diff --git a/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc b/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc index f49e375f617..84a865b5bed 100644 --- a/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc +++ b/doc/qtcreator/src/mcu/creator-mcu-dev.qdoc @@ -108,7 +108,7 @@ To configure a connection between \QC and your MCU board: \list 1 - \li Go to \preferences > \uicontrol Devices > \uicontrol MCU. + \li Go to \preferences > \uicontrol SDKs > \uicontrol MCU. \li In \uicontrol {\QMCU SDK}, specify the path to the directory where you installed \QMCU SDK. \image qtcreator-preferences-mcu.webp {MCU preferences} @@ -189,7 +189,7 @@ \QC automatically adds kits for all the available MCU targets if you select \uicontrol {Automatically create kits for all available targets on start} - in \preferences > \uicontrol Devices > \uicontrol MCU. + in \preferences > \uicontrol SDKs > \uicontrol MCU. \image qtcreator-preferences-kits-mcu.webp {MCU kit} @@ -197,7 +197,7 @@ the existing kits or create additional kits. To do this manually for each target, select \uicontrol {Update Kit} or \uicontrol {Create Kit}. - To add new kits, go to \preferences > \uicontrol Devices > \uicontrol MCU, + To add new kits, go to \preferences > \uicontrol SDKs > \uicontrol MCU, and select \uicontrol {Create Kit}. This adds the paths to the kit's toolkits and SDKs, and keeps them synchronized when you select \uicontrol Apply or \uicontrol OK. diff --git a/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc b/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc index 5132adf9dc0..751e379cd24 100644 --- a/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc +++ b/doc/qtcreator/src/meson/creator-projects-meson-building.qdoc @@ -35,7 +35,7 @@ \section1 Meson Build Steps - \QC builds Meson projects by running \c {ninja -v target}. + \QC builds Meson projects by running \c {meson compile --verbose target}. You can add arguments and targets for the build command in \uicontrol {Build Steps}. diff --git a/doc/qtcreator/src/meson/creator-projects-meson.qdoc b/doc/qtcreator/src/meson/creator-projects-meson.qdoc index 4c71fc7e5e8..b9913b04a09 100644 --- a/doc/qtcreator/src/meson/creator-projects-meson.qdoc +++ b/doc/qtcreator/src/meson/creator-projects-meson.qdoc @@ -19,8 +19,8 @@ \note Many features available with Meson build or usually available from \QC are missing. - \QC automatically detects the Meson and Ninja executables specified in the - \c PATH. You can add paths to other Meson or Ninja executables and use them + \QC automatically detects the Meson executables specified in the + \c PATH. You can add paths to other Meson executables and use them in different build and run \l{Kits}{kits}. \note Enable the Meson plugin to use it. @@ -30,7 +30,7 @@ \QC does not have strong requirements on Meson build's version, any version above 0.49.0 should be compatible. - To specify paths to Meson or Ninja executables: + To specify paths to Meson executables: \list 1 @@ -41,8 +41,7 @@ \li In the \uicontrol Name field, specify a name for the tool. - \li In the \uicontrol Path field, specify the path to the Meson or Ninja - executable. + \li In the \uicontrol Path field, specify the path to the Meson executable. \li Select \uicontrol Apply to save your changes. @@ -50,7 +49,7 @@ Select the \preferences > \uicontrol Kits > \uicontrol Kits - tab to add the Meson and Ninja tools to a build and run kit: + tab to add the Meson tools to a build and run kit: \image qtcreator-kits-meson.png "Setting Meson executable in Kit preferences" diff --git a/doc/qtcreator/src/projects/creator-only/creator-how-to-edit-qbs-profiles.qdoc b/doc/qtcreator/src/projects/creator-only/creator-how-to-edit-qbs-profiles.qdoc index 04e81a46a38..680cc06cfb0 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-how-to-edit-qbs-profiles.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-how-to-edit-qbs-profiles.qdoc @@ -23,8 +23,8 @@ \list 1 \li In \preferences > \uicontrol Kits, select - the kit, and then select \uicontrol Change next to the - \uicontrol {Additional Qbs Profile Settings} field to open the + the kit, and then select \uicontrol Change next to + \uicontrol {Qbs profile additions} to open the \uicontrol {Custom Properties} dialog. \image qtcreator-qbs-profile-settings.png "Custom Properties dialog" \li Double-click an empty cell in the \uicontrol Key column to specify diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc index f6da8a35934..4abd6107ff8 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc @@ -156,7 +156,7 @@ "trDisplayName": "C++ Class", "trDisplayCategory": "C++", "iconText": "h/cpp", - "enabled": "%{JS: value('Plugins').indexOf('CppEditor') >= 0}", + "enabled": "%{JS: isPluginRunning('cppeditor')}", \endcode \list diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc index 3777583d924..3f5dcda6306 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc @@ -44,7 +44,7 @@ \li Select \preferences > \uicontrol Kits. \li Select \uicontrol Add to start from an empty kit or \uicontrol Clone to clone the selected kit and edit its preferences. - \image qtcreator-kits.png + \image qtcreator-preferences-kits.webp {Kits preferences} \li Set \l{Kits}{kit preferences} according to the build system and device type. @@ -80,7 +80,7 @@ \uicontrol Kits. For example, if you use CMake to build all your projects, you can hide Qbs and qmake preferences by default. - \image qtcreator-kits.png + \image qtcreator-preferences-kits.webp {Kits preferences} \section1 Filtering Kit Preferences @@ -115,20 +115,14 @@ \li Name for the kit to use as a part of directory names. This value is used for the \c CurrentKit:FileSystemName variable, which determines the name of the shadow build directory, for example. - \row - \li \uicontrol{Run device type} - \li Type of the run device. \row \li \uicontrol {Run device} - \li The device to run applications on. + \li \uicontrol {Type} is the type of the run device, and + \uicontrol {Device} is the device to run applications on. \row \li \uicontrol {Build device} - \li The device to build applications on. - - \row - \li \uicontrol Sysroot - \li Directory where the device image is located. If you are not - cross-compiling, leave this field empty. + \li \uicontrol {Type} is the type of the build device, and + \uicontrol {Device} is the device to build applications on. \row \li \uicontrol {Emulator skin} \li Skin to use for the \l {Emulator}{\B2Q Emulator Device}. @@ -147,9 +141,15 @@ information from \uicontrol {Qt mkspec}, which you can change. \row \li \uicontrol Environment - \li Select \uicontrol Change to modify environment variable values for - build environments in the \uicontrol {Edit Environment Changes} - dialog. For more information about how to add and remove variable + \li Select \uicontrol {Edit Build Environment} to modify + environment variable values for build environments in + the \uicontrol {Edit Build Environment} dialog. + + Select \uicontrol {Edit Run Environment} to modify + environment variable values for run environments in + the \uicontrol {Edit Run Environment} dialog. + + For more information about how to add and remove variable values, see \l{Edit environment settings}. \row \li \uicontrol {Force UTF-8 MSVC compiler output} @@ -165,6 +165,10 @@ For Android kits, the \uicontrol {Android GDB server} field will display the path to GDB server executable. + \row + \li \uicontrol Sysroot + \li Directory where the device image is located. If you are not + cross-compiling, leave this field empty. \row \li \uicontrol {Qt version} \li Qt version to use for building the project. You can add Qt versions @@ -175,12 +179,12 @@ variable for the qmake executable. It refers to the qmake executable it finds as \b{Qt in PATH} and selects it as the Qt version to use for the \uicontrol Desktop kit that is created by default. + + \uicontrol {mkspec} is the name of the mkspec configuration that + qmake uses. If you leave this field empty, qmake uses the default + mkspec of the selected Qt version. \row - \li \uicontrol {Qt mkspec} - \li Name of the mkspec configuration that qmake uses. If you leave this - field empty, it uses the default mkspec of the selected Qt version. - \row - \li \uicontrol {Additional Qbs profile settings} + \li \uicontrol {Qbs profile additions} \li Select \uicontrol Change to add settings to Qbs build profiles. For more information, see \l {Edit Qbs profiles}. \row @@ -200,6 +204,11 @@ \li \uicontrol {CMake configuration} \li Select \uicontrol Change to edit the parameters of the CMake configuration for the kit. + \row + \li \uicontrol {Python} + \li Select the Python version for the kit. Select \uicontrol Manage + to add Python versions. For more information, see + \l{Select the Python version}. \row \li \uicontrol {Meson tool} \li Meson tool to use for building the project. Select \uicontrol Manage diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc index cd839283baf..6b8c347b4c3 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc @@ -22,7 +22,7 @@ The final environment is specified separately for each kit. With project-specific environment settings you can change the environment for all kits that you use to build, deploy, and run the project simultaneously, - rather than having to change it separately for each kit. + rather than having to change it separately for each \l{Kits}{kit}. The changes are stored in the local project-specific \c{CMakeLists.txt.user} or \c{.pro.user} file, depending on the build system you use, such as CMake @@ -43,9 +43,9 @@ To change the system environment for a project from the one in which \QC is started, select \uicontrol Projects > \uicontrol {Project Settings} - > \uicontrol Environment. + > \uicontrol {Project Environment}. - \image qtcreator-projects-environment.webp {Environment tab in Project Settings} + \image qtcreator-projects-environment.webp {Project Environment view in Project Settings} You can edit existing environment variables or add, reset, unset, or temporarily disable variables. @@ -125,7 +125,7 @@ \title Edit environment settings You can change the environment variable values for build or run environments - either for a particular project or globally: + globally or for a particular project or kit: \list \li To change values globally, go to \preferences > @@ -135,6 +135,10 @@ \uicontrol {Add} in the \l {Change the environment for a project} {project}, \l {Specify the build environment}{build}, or \l {Specify the run environment}{run} environment settings. + \li To change values for a kit, go to \preferences > + \uicontrol Kits > \uicontrol Kits, and select + \uicontrol {Edit Build Environment} or + \uicontrol {Edit Run Environment} in \uicontrol {Environment}. \endlist \image qtcreator-edit-environment.webp {Edit Environment dialog} @@ -168,5 +172,5 @@ characters (##). \sa {Specify the environment for projects}, {Configure projects for building}, - {Configure projects for running}, {Use Qt Creator variables} + {Configure projects for running}, {Use Qt Creator variables}, {Kits} */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc index 6757d3c165a..d93b9f03a56 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc @@ -91,10 +91,9 @@ \li \l{Specify dependencies}{Dependencies} \li \l{Document code}{Documentation Comments} \li \l{Specify editor settings}{Editor} - \li \l{Specify the environment for projects}{Environment} + \li \l{Specify the environment for projects}{Project Environment} \li \l{Link projects with GitLab}{GitLab} - \li \l{Configure language server workspace}{Language Server} - \li \l{Turn on or off \QMLLS for a project}{Qt Quick} + \li \l{Configure language servers for projects}{Language Server} \li \l{Specify settings for quick fixes}{Quick Fixes} \li \l{Apply filters before scanning for tests}{Testing} \li \l{Exclude files from to-do lists}{To-Do} (experimental) diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-qt-quick.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-qt-quick.qdoc deleted file mode 100644 index 28f884a9732..00000000000 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-qt-quick.qdoc +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright (C) 2024 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only - -/*! - \page creator-how-to-qt-quick-settings-for-projects.html - \previouspage creator-how-tos.html - - \ingroup creator-how-to-projects-configure - \ingroup creator-how-to-lsp - - \title Turn on or off \QMLLS for a project - - Since Qt 6.4, \QMLLS offers code completion and issues warnings for QML. - - To turn on or off \QMLLS for the current project: - - \list 1 - \li Select \uicontrol Projects > \uicontrol {Project Settings} > - \uicontrol {Qt Quick}. - \image qtcreator-projects-settings-qt-quick.webp {Qt Quick settings for a project} - \li Clear \uicontrol {Use global settings}. - \li Clear or select \uicontrol {Turn on}. - \endlist - - To view and modify the global settings, select the link in - \uicontrol {Use global settings}. - - \sa {Configure \QMLLS}, {Configuring Projects} -*/ diff --git a/doc/qtcreator/src/qnx/creator-developing-qnx.qdoc b/doc/qtcreator/src/qnx/creator-developing-qnx.qdoc index f6990187c3d..0696fd94e15 100644 --- a/doc/qtcreator/src/qnx/creator-developing-qnx.qdoc +++ b/doc/qtcreator/src/qnx/creator-developing-qnx.qdoc @@ -40,7 +40,7 @@ \uicontrol {Start Wizard} to add a QNX Neutrino device. \li Select \uicontrol Apply to fetch the information needed for creating kits. - \li Go to \preferences > \uicontrol Devices > \uicontrol QNX. + \li Go to \preferences > \uicontrol SDKs > \uicontrol QNX. \li Select \uicontrol {Create Kit} to create a kit for a particular platform. \image qtcreator-preferences-qnx.webp {QNX Preferences} diff --git a/doc/qtcreator/src/qtcreator-toc.qdoc b/doc/qtcreator/src/qtcreator-toc.qdoc index 51725d7357f..d98094b2d60 100644 --- a/doc/qtcreator/src/qtcreator-toc.qdoc +++ b/doc/qtcreator/src/qtcreator-toc.qdoc @@ -62,6 +62,8 @@ \generatelist creator-how-to-qnx \li Remote Linux \generatelist creator-how-to-remote-linux + \li SDKs + \generatelist creator-how-to-sdks \li WebAssembly \generatelist creator-how-to-webassembly \li VxWorks diff --git a/doc/qtcreator/src/vcs/creator-only/creator-vcs-bazaar.qdoc b/doc/qtcreator/src/vcs/creator-only/creator-vcs-bazaar.qdoc index d5d2b9a06a8..4932ab8e472 100644 --- a/doc/qtcreator/src/vcs/creator-only/creator-vcs-bazaar.qdoc +++ b/doc/qtcreator/src/vcs/creator-only/creator-vcs-bazaar.qdoc @@ -19,6 +19,8 @@ Bazaar is a free version control system sponsored by Canonical. + \note Enable the Bazaar plugin to use it. + In addition to the standard version control system functions described in \l {Use common VCS Functions}, you can select \uicontrol Tools > \uicontrol Bazaar > \uicontrol Pull to turn a branch into a mirror of @@ -62,6 +64,6 @@ \li \uicontrol Timeout sets a timeout for version control operations. \endlist - \sa {Set up version control systems}, {Use common VCS functions}, - {Version Control Systems} + \sa {Enable and disable plugins}, {Set up version control systems}, + {Use common VCS functions}, {Version Control Systems} */ diff --git a/doc/qtcreator/src/vcs/creator-only/creator-vcs-clearcase.qdoc b/doc/qtcreator/src/vcs/creator-only/creator-vcs-clearcase.qdoc index 64cd447d964..94d01403c43 100644 --- a/doc/qtcreator/src/vcs/creator-only/creator-vcs-clearcase.qdoc +++ b/doc/qtcreator/src/vcs/creator-only/creator-vcs-clearcase.qdoc @@ -21,6 +21,8 @@ development support, and build automation solution developed by IBM. Use the ClearCase client plugin on Linux and Windows to access a ClearCase server. + \note Enable the ClearCase plugin to use it. + \section1 Using GNU Diffutils with ClearCase You can use the GNU Diffutils tool With ClearCase to compare files and @@ -95,6 +97,6 @@ Set a timeout for version control operations in \uicontrol Timeout. - \sa {Set up version control systems}, {Use common VCS functions}, - {Version Control Systems} + \sa {Enable and disable plugins}, {Set up version control systems}, + {Use common VCS functions}, {Version Control Systems} */ diff --git a/doc/qtcreator/src/vcs/creator-only/creator-vcs-cvs.qdoc b/doc/qtcreator/src/vcs/creator-only/creator-vcs-cvs.qdoc index 54e9b67eb91..adc60b8a2b1 100644 --- a/doc/qtcreator/src/vcs/creator-only/creator-vcs-cvs.qdoc +++ b/doc/qtcreator/src/vcs/creator-only/creator-vcs-cvs.qdoc @@ -19,6 +19,8 @@ CVS is an open source version control system. + \note Enable the CVS plugin to use it. + In addition to the standard version control system functions described in \l {Use common VCS Functions}, you can select \uicontrol Tools > \uicontrol CVS > \uicontrol Edit to set a file as writable, notify @@ -49,6 +51,6 @@ files that belong to the commit. \endlist - \sa {Set up version control systems}, {Use common VCS functions}, - {Version Control Systems} + \sa {Enable and disable plugins}, {Set up version control systems}, + {Use common VCS functions}, {Version Control Systems} */ diff --git a/doc/qtcreator/src/vcs/creator-only/creator-vcs-fossil.qdoc b/doc/qtcreator/src/vcs/creator-only/creator-vcs-fossil.qdoc index f8707657876..aa8555ac796 100644 --- a/doc/qtcreator/src/vcs/creator-only/creator-vcs-fossil.qdoc +++ b/doc/qtcreator/src/vcs/creator-only/creator-vcs-fossil.qdoc @@ -17,6 +17,8 @@ wiki, and built-in web server. Fossil is available for Linux, Windows, and \macos. + \note Enable the Fossil plugin to use it. + To use Fossil from \QC, you must install and configure it, as described in the following sections. @@ -93,6 +95,6 @@ creation. \endlist - \sa {Set up version control systems}, {Use common VCS functions}, - {Version Control Systems} + \sa {Enable and disable plugins}, {Set up version control systems}, + {Use common VCS functions}, {Version Control Systems} */ diff --git a/doc/qtcreator/src/vcs/creator-only/creator-vcs-mercurial.qdoc b/doc/qtcreator/src/vcs/creator-only/creator-vcs-mercurial.qdoc index 624e00a080a..8a03adb1bfb 100644 --- a/doc/qtcreator/src/vcs/creator-only/creator-vcs-mercurial.qdoc +++ b/doc/qtcreator/src/vcs/creator-only/creator-vcs-mercurial.qdoc @@ -19,6 +19,8 @@ Mercurial is a free, distributed source control management tool. + \note Enable the Mercurial plugin to use it. + In addition to the standard version control system functions described in \l {Use common VCS Functions}, you can select the following functions in the \uicontrol Tools > \uicontrol Mercurial submenu: @@ -64,6 +66,6 @@ \li \uicontrol Timeout sets a timeout for version control operations. \endlist - \sa {Set up version control systems}, {Use common VCS functions}, - {Version Control Systems} + \sa {Enable and disable plugins}, {Set up version control systems}, + {Use common VCS functions}, {Version Control Systems} */ diff --git a/doc/qtcreator/src/vcs/creator-only/creator-vcs-subversion.qdoc b/doc/qtcreator/src/vcs/creator-only/creator-vcs-subversion.qdoc index d9a5a44e821..d11948e36bf 100644 --- a/doc/qtcreator/src/vcs/creator-only/creator-vcs-subversion.qdoc +++ b/doc/qtcreator/src/vcs/creator-only/creator-vcs-subversion.qdoc @@ -19,6 +19,8 @@ Subversion is an open source version control system. + \note Enable the Subversion plugin to use it. + In addition to the standard version control system functions described in \l {Use common VCS Functions}, you can go to \uicontrol Tools > \uicontrol Subversion and select \uicontrol Describe to display commit log @@ -47,6 +49,6 @@ changes in annotation views. \endlist - \sa {Set up version control systems}, {Use common VCS functions}, - {Version Control Systems} + \sa {Enable and disable plugins}, {Set up version control systems}, + {Use common VCS functions}, {Version Control Systems} */ diff --git a/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc b/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc index de459d6ec88..db5cc07c16c 100644 --- a/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc +++ b/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc @@ -31,7 +31,7 @@ \row \li \l{Bazaar} \li \l{http://bazaar.canonical.com/} - \li + \li Enable the plugin to use it. \row \li \l{ClearCase} \li \l{http://www-01.ibm.com/software/awdtools/clearcase/} @@ -47,7 +47,7 @@ \row \li \l{Git} \li \l{https://git-scm.com/} - \li Git version 1.9.0, or later + \li Git version 2.13.0, or later Gerrit version 2.6, or later \row @@ -57,7 +57,7 @@ \row \li \l{Mercurial} \li \l{http://mercurial.selenic.com/} - \li + \li Enable the plugin to use it. \row \li \l{Perforce} \li \l{http://www.perforce.com} @@ -68,6 +68,8 @@ \li \l{Subversion} \li \l{http://subversion.apache.org/} \li Subversion version 1.7.0 and later + + Enable the plugin to use it. \endtable \sa {Create VCS repositories for new projects}, {Enable and disable plugins}, diff --git a/doc/qtcreator/src/vcs/creator-vcs-git.qdoc b/doc/qtcreator/src/vcs/creator-vcs-git.qdoc index 01f62cb3d30..e422b7b3e1d 100644 --- a/doc/qtcreator/src/vcs/creator-vcs-git.qdoc +++ b/doc/qtcreator/src/vcs/creator-vcs-git.qdoc @@ -344,9 +344,71 @@ In the \uicontrol {Git Log} view, select a commit identifier to view commit details. - Right-click a commit identifier to \l{Apply actions to commits} - {apply actions to the commit}, such as cherry-pick, checkout, - or revert it. + Right-click a commit identifier to apply actions to the commit. + + \table + \header + \li Menu Item + \li Description + \li Learn More + \row + \li \uicontrol {Add Tag for } + \li Add a tag reference to the change. + \li + \row + \li \uicontrol {Checkout } + \li Check out the commit in a headless state. + \li + \row + \li \uicontrol {Cherry-Pick } + \li Cherry-pick the selected commit to the current branch. + \li + \row + \li \uicontrol {Create branch from } + \li Create a branch based on the commit. + \li \l {git branch} + \row + \li \uicontrol {Copy } + \li Copy the commit's to the clipboard. + \li + \row + \li \uicontrol {Describe Change } + \li View a description of the change including the diff in the + \uicontrol {Git Show} view. + \li + \row + \li \uicontrol {Diff Against } + \li Show the changes between the commit and the current HEAD. + \li \l {git diff} + \row + \li \uicontrol {Interactive Rebase from } + \li Rebase the current branch on top of , and choose what to do + with each commit. + \li \l {Interactive rebase} + \row + \li \uicontrol {Log for } + \li Show the versioning history the commit. + \li + \row + \li \uicontrol {Reset to Change } + \li Reset the working directory to the commit. + \li \l {git reset} + \row + \li \uicontrol {Revert } + \li Revert the changes introduced by this commit. All other commits + remain unchanged. + \li + \row + \li \uicontrol {Save for Diff} + \li Save to the current commit to prepare for + \uicontrol {Diff Against Saved }. + \li +\row + \li \uicontrol {Diff Against Saved } + \li Show the changes between the commit and the saved . + \li \l {git diff} + \endtable + \section1 Toggle the diff view @@ -400,7 +462,7 @@ \section1 Show details To display a description of the change including the diff in the - \uicontrol {Git Show} view, select \uicontrol {Describe Change} in the + \uicontrol {Git Show} view, select \uicontrol {Describe Change } in the context menu. \image qtcreator-vcs-show.png {Commit description in Git Show} @@ -662,6 +724,9 @@ \uicontrol Tools > \uicontrol Git > \uicontrol {Local Repository} and select \uicontrol Status. + To include untracked files, select + \uicontrol {Status (Including All Untracked)}. + \if defined(qtcreator) \sa {Use Git}{How To: Use Git}, {Git} \endif @@ -704,6 +769,9 @@ \li Select \uicontrol Commit to start committing. \endlist + To view the log of the current branch, select the branch name in + \uicontrol {Branch}. + \if defined(qtcreator) \sa {Use Git}{How To: Use Git}, {Git} \endif @@ -727,7 +795,10 @@ \uicontrol Git > \uicontrol {Local Repository} > \uicontrol {Amend Last Commit}. - \image qtcreator-git-amend.png {Amending a Git commit} + \image qtcreator-git-amend.webp {Amending a Git commit} + + To view the log of the current branch, select the branch name in + \uicontrol Branch. To view the commit in its current form before amending, select \uicontrol {Show HEAD}. @@ -775,7 +846,7 @@ To start the interactive rebase from the change log, go to \uicontrol Tools > \uicontrol Git > \uicontrol Branches > \uicontrol Log. Select the change, - and then select \uicontrol {Interactive Rebase from Change} in the context + and then select \uicontrol {Interactive Rebase from } in the context menu. \if defined(qtcreator) @@ -815,7 +886,7 @@ To add a tag to a change in the change log, select \uicontrol Branches > \uicontrol Log. Select the change, and then select \uicontrol {Add Tag - for Change} in the context menu. + for } in the context menu. If you checked out a specific commit, the list of branches displays a \e {Detached HEAD} entry. @@ -1194,7 +1265,7 @@ \table \header - \li Action + \li Menu Item \li Description \row \li Blame diff --git a/doc/qtcreator/src/webassembly/creator-webassembly.qdoc b/doc/qtcreator/src/webassembly/creator-webassembly.qdoc index 37526abe87d..9fbc5504c79 100644 --- a/doc/qtcreator/src/webassembly/creator-webassembly.qdoc +++ b/doc/qtcreator/src/webassembly/creator-webassembly.qdoc @@ -28,7 +28,7 @@ To set up the development environment for WebAssembly: \list 1 - \li Go to \preferences > \uicontrol Devices > \uicontrol WebAssembly. + \li Go to \preferences > \uicontrol SDKs > \uicontrol WebAssembly. \li In \uicontrol {Emscripten SDK path}, enter the root directory where you installed \c emsdk. \li \QC configures the \uicontrol {Emscripten SDK environment} for you diff --git a/doc/qtcreatordev/src/lua-extensions.qdoc b/doc/qtcreatordev/src/lua-extensions.qdoc index 581db2e3922..44e49b275f8 100644 --- a/doc/qtcreatordev/src/lua-extensions.qdoc +++ b/doc/qtcreatordev/src/lua-extensions.qdoc @@ -25,18 +25,19 @@ \code --- MyExtension.lua return { + Id = "myextension", Name = "MyExtension", Version = "1.0.0", CompatVersion = "1.0.0", Vendor = "My Company", + VendorId = "mycompany", Category = "Tests", Description = "Describe what your extension does in a sentence.", LongDescription = [[ - Tell users more about your extension. + Tell users more about your extension. This text is rendered as Markdown. ]], Dependencies = { - { Name = "Core", Version = "13.0.82", Required = true }, - { Name = "Lua", Version = "13.0.82", Required = true } + { Name = "Lua", Version = "15.0.0", Required = true } }, setup = function() print("Hello from Lua!") end, printToOutputPane = true, @@ -125,7 +126,7 @@ void initialize() final { // The registered function will be called when the Lua module 'MyCppExtension' is required. // The returned table will be returned from the require call in Lua. - ::Lua::LuaEngine::registerProvider("MyCppExtension", [](sol::state_view lua) -> sol::object { + ::Lua::registerProvider("MyCppExtension", [](sol::state_view lua) -> sol::object { sol::table result = lua.create_table(); result["myFunction"] = [](int a, int b) { return a + b; }; return result; @@ -139,7 +140,7 @@ \code local MyCppExtension = require 'MyCppExtension' --- MyCppExtension is now a table with a single field 'myFunction', as it is returned from the - --- C++ function registered via 'LuaEngine::registerProvider(...)'. + --- C++ function registered via 'Lua::registerProvider(...)'. print(MyCppExtension.myFunction(1, 2)) \endcode @@ -271,5 +272,3 @@ \quotefile ../../../src/plugins/lua/meta/utils.lua */ - - diff --git a/doc/qtcreatordev/src/plugin-metadata.qdoc b/doc/qtcreatordev/src/plugin-metadata.qdoc index d91bf52c4f2..cf4add1f4e2 100644 --- a/doc/qtcreatordev/src/plugin-metadata.qdoc +++ b/doc/qtcreatordev/src/plugin-metadata.qdoc @@ -26,13 +26,17 @@ \li Meaning \row \li Id - \li String + \li String (must be lowercase) \li This is used as an identifier for the plugin and can e.g. be referenced in other plugin's dependencies. \row \li Name \li String \li This is used as the display name of your plugin in the UI. + \row + \li VendorId + \li String (must be lowercase) + \li A unique identifier for the vendor, like \c{mycompany}. \row \li Version \li String diff --git a/qbs/modules/go/go.qbs b/qbs/modules/go/go.qbs index 63c792519c3..ad0d397e890 100644 --- a/qbs/modules/go/go.qbs +++ b/qbs/modules/go/go.qbs @@ -43,8 +43,11 @@ Module { var arch = product.go.architectures[i]; for (var j = 0; j < product.go.platforms.length; ++j) { var plat = product.go.platforms[j]; + var targetName = product.targetName + '-' + plat + '-' + arch; + if (plat == "windows") + targetName = targetName.concat(".exe"); var artifact = { - filePath: product.targetName + '-' + plat + '-' + arch, + filePath: targetName, fileTags: [ "application", plat, arch ] }; result.push(artifact); diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index fc32606b907..d6a8ab58cf4 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -4,16 +4,16 @@ import qbs.FileInfo import qbs.Utilities Module { - property string qtcreator_display_version: '15.0.1' + property string qtcreator_display_version: '16.0.0-rc1' property string ide_version_major: '15' property string ide_version_minor: '0' - property string ide_version_release: '1' + property string ide_version_release: '84' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release property string ide_compat_version_major: '15' property string ide_compat_version_minor: '0' - property string ide_compat_version_release: '0' + property string ide_compat_version_release: '84' property string qtcreator_compat_version: ide_compat_version_major + '.' + ide_compat_version_minor + '.' + ide_compat_version_release diff --git a/scripts/build.py b/scripts/build.py index 6f2cd39e668..737c84a7066 100755 --- a/scripts/build.py +++ b/scripts/build.py @@ -169,6 +169,9 @@ def build_qtcreator(args, paths): '-DBUILD_DEVELOPER_DOCS=' + cmake_option(not args.no_docs), '-DBUILD_EXECUTABLE_SDKTOOL=' + cmake_option(args.with_sdk_tool), '-DQTC_FORCE_XCB=ON', + '-DQTC_USE_SYSTEM_ZLIB=OFF', + '-DQTC_USE_SYSTEM_BZIP2=OFF', + '-DQTC_USE_SYSTEM_LZMA=OFF', '-DWITH_TESTS=' + cmake_option(args.with_tests)] cmake_args += common_cmake_arguments(args) diff --git a/share/qtcreator/debugger/creatortypes.py b/share/qtcreator/debugger/creatortypes.py index 5b4f9f08900..cd090c59ed8 100644 --- a/share/qtcreator/debugger/creatortypes.py +++ b/share/qtcreator/debugger/creatortypes.py @@ -411,3 +411,15 @@ def qdump__QmakeProjectManager__QmakePriFileNode(d, value): def qdump__QmakeProjectManager__QmakeProFileNode(d, value): qdump__ProjectExplorer__FolderNode(d, value) + + +def qdump__Utils__Result(d, value): + error, _pad, has_err = value.split('{QString}@b') + if has_err: + d.putExpandable() + d.putValue('Error') + if d.isExpanded(): + with Children(d): + d.putSubItem('message', error) + else: + d.putValue('Ok') diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 677943ca34a..8ef403e829d 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -2315,7 +2315,7 @@ typename)) with SubItem(self, propertyCount + dynamicPropertyCount): if not self.isCli: self.putField('key', self.encodeByteArray(k)) - self.putField('keyencoded', 'latin1') + self.putField('keyencoded', 'latin1:1:0') self.putItem(v) dynamicPropertyCount += 1 self.putItemCount(propertyCount + dynamicPropertyCount) @@ -3917,18 +3917,8 @@ typename)) alignment = self.type_size(typeid) elif code in (TypeCode.Pointer, TypeCode.Reference, TypeCode.RValueReference): alignment = self.ptrSize() - elif self.isCdb: - alignment = self.nativeStructAlignment(self.type_nativetype(typeid)) else: - size = self.type_size(typeid) - if size is None: - self.dump_type_cache() - self.warn("NO ALIGNMENT FOUND FOR SIZE OF TYPE %s" % str(typeid)) - return 1 - if size >= self.ptrSize(): - alignment = self.ptrSize() - else: - alignment = size + alignment = self.nativeStructAlignment(self.type_nativetype(typeid)) #self.warn("GUESSING ALIGNMENT %s FOR TYPEID %s" % (alignment, typeid)) self.type_alignment_cache[typeid] = alignment return alignment @@ -4056,7 +4046,7 @@ typename)) #self.warn('SEARCHING FOR MEMBER: %s IN %s' % (name, value.type.name)) members = self.value_members(value, True) #self.warn('MEMBERS: %s' % ', '.join(str(m.name) for m in members)) - base = None + bases = [] for member in members: #self.warn('CHECKING FIELD %s' % member.name) if member.type.code == TypeCode.Typedef: @@ -4065,9 +4055,9 @@ typename)) #self.warn('FOUND MEMBER 1: %s IN %s' % (name, value.type.name)) return member if member.isBaseClass: - base = member + bases.append(member) if self.isCdb: - if base is not None: + for base in bases: # self.warn("CHECKING BASE CLASS '%s' for '%s'" % (base.type.name, name)) res = self.value_member_by_name(base, name) if res is not None: diff --git a/share/qtcreator/debugger/gdbbridge.py b/share/qtcreator/debugger/gdbbridge.py index cbda6aa7ce6..8cbb1ba6e3a 100644 --- a/share/qtcreator/debugger/gdbbridge.py +++ b/share/qtcreator/debugger/gdbbridge.py @@ -135,9 +135,12 @@ class PlainDumper(): if isinstance(val, str): # encode and avoid extra quotes ('"') at beginning and end d.putValue(d.hexencode(val), 'utf8:1:0') - elif val is not None: # Assuming LazyString - d.putCharArrayValue(val.address, val.length, - val.type.target().sizeof) + # It might as well be just another gdb.Value, see + # https://sourceware.org/gdb/current/onlinedocs/gdb.html/Pretty-Printing-API.html#:~:text=Function%3A%20pretty_printer.to_string%20(self) + elif isinstance(val, gdb.Value): + d.putItem(d.fromNativeValue(val)) + else: + return lister = getattr(printer, 'children', None) if lister is None: @@ -318,7 +321,7 @@ class Dumper(DumperBase): target_typeid = self.from_native_type(nativeType.target().unqualified()) typeid = self.create_reference_typeid(target_typeid) - elif code == gdb.TYPE_CODE_RVALUE_REF and hasattr(gdb, "TYPE_CODE_RVALUE_REF"): + elif hasattr(gdb, "TYPE_CODE_RVALUE_REF") and code == gdb.TYPE_CODE_RVALUE_REF: #self.warn('RVALUEREF') target_typeid = self.from_native_type(nativeType.target()) typeid = self.create_rvalue_reference_typeid(target_typeid) @@ -577,6 +580,17 @@ class Dumper(DumperBase): return fields + def nativeStructAlignment(self, nativeType): + #DumperBase.warn("NATIVE ALIGN FOR %s" % nativeType.name) + def handleItem(nativeFieldType, align): + a = self.type_alignment(self.from_native_type(nativeFieldType)) + return a if a > align else align + align = 1 + for f in nativeType.fields(): + align = handleItem(f.type, align) + return align + + def listLocals(self, partialVar): frame = gdb.selected_frame() @@ -1030,7 +1044,8 @@ class Dumper(DumperBase): for printer in printers.subprinters: self.importPlainDumper(printer) else: - self.warn('Loading a printer without the subprinters attribute not supported.') + self.warn("Failed to load printer '{}': loading printers without " + "the subprinters attribute not supported.".format(printers.name)) def importPlainDumpers(self): for obj in gdb.objfiles(): @@ -1180,6 +1195,8 @@ class Dumper(DumperBase): return self.qtNamespace() + 'Qt::' + enumValue def lookupNativeType(self, type_name): + typeobj = None + if type_name == 'void': typeobj = gdb.lookup_type(type_name) self.typesToReport[type_name] = typeobj diff --git a/share/qtcreator/debugger/libcpp_stdtypes.py b/share/qtcreator/debugger/libcpp_stdtypes.py index 6c3e051261d..0b25daaf45d 100644 --- a/share/qtcreator/debugger/libcpp_stdtypes.py +++ b/share/qtcreator/debugger/libcpp_stdtypes.py @@ -1,6 +1,29 @@ # Copyright (C) 2022 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +# Disclaimers: +# 1. Looking up the allocator template type is potentially an expensive operation. +# A better alternative would be finding out the allocator type +# through accessing a class member. +# However due to different implementations doing things very differently +# it is deemed acceptable. +# Specifically: +# * GCC's `_Rb_tree_impl` basically inherits from the allocator, the comparator +# and the sentinel node +# * Clang packs the allocator and the sentinel node into a compressed pair, +# so depending on whether the allocator is sized or not, +# there may or may not be a member to access +# * MSVC goes even one step further and stores the allocator and the sentinel node together +# in a compressed pair, which in turn is stored together with the comparator inside +# another compressed pair +# 2. `size` on an empty type, which the majority of the allocators are of, +# for whatever reason reports 1. In theory there can be allocators whose type is truly 1 byte, +# in which case we will have issues, but in practice they should be rather rare. +# 3. Note that sometimes the size of `std::pmr::polymorphic_allocator` is bizarrely reported +# as exactly 0, for example this happens with +# `std::__1::pmr::polymorphic_allocator>` from `std::pmr::map`, +# so dumping pmr containers still may still have some breakages for libcxx + from stdtypes import qdump__std__array, qdump__std__complex, qdump__std__once_flag, qdump__std__unique_ptr, qdumpHelper__std__deque__libcxx, qdumpHelper__std__vector__libcxx, qdump__std__forward_list from utils import DisplayFormat from dumper import Children, DumperBase @@ -53,7 +76,14 @@ def qdump__std____1__list(d, value): def qdump__std____1__set(d, value): - (proxy, head, size) = value.split("ppp") + # see disclaimer #1 + alloc_type = value.type[2] + alloc_size = alloc_type.size() + # see disclaimer #2 + if alloc_size > 1: + (proxy, head, alloc, size) = value.split('pp{{{}}}p'.format(alloc_type.name)) + else: + (proxy, head, size) = value.split("ppp") d.check(0 <= size and size <= 100 * 1000 * 1000) d.putItemCount(size) @@ -88,30 +118,29 @@ def qform__std____1__map(): def qdump__std____1__map(d, value): - try: - (proxy, head, size) = value.split("ppp") - d.check(0 <= size and size <= 100 * 1000 * 1000) - - # Sometimes there is extra data at the front. Don't know why at the moment. - except RuntimeError: - (junk, proxy, head, size) = value.split("pppp") - d.check(0 <= size and size <= 100 * 1000 * 1000) + alloc_type = value.type[3] # see disclaimer #1 + alloc_size = alloc_type.size() + # see disclaimers #2 and #3 + if alloc_size > 1: + (begin_node_ptr, head, alloc, size) = value.split('pp{{{}}}p'.format(alloc_type.name)) + else: + (begin_node_ptr, head, size) = value.split("ppp") + d.check(0 <= size and size <= 100 * 1000 * 1000) d.putItemCount(size) if d.isExpanded(): - keyType = value.type[0] - valueType = value.type[1] - pairType = value.type[3][0] + pair_type = alloc_type[0] def in_order_traversal(node): - (left, right, parent, color, pad, pair) = d.split("pppB@{%s}" % (pairType.name), node) + (left, right, _parent, _is_black, _pad, pair) = d.split( + 'pppB@{{{}}}'.format(pair_type.name), node) if left: for res in in_order_traversal(left): yield res - yield pair.split("{%s}@{%s}" % (keyType.name, valueType.name))[::2] + yield pair if right: for res in in_order_traversal(right): @@ -278,6 +307,10 @@ def qdump__std____1__string(d, value): d.putCharArrayHelper(data, size, charType) +def qdump__std____1__basic_string(d, value): + qdump__std____1__string(d, value) + + def qdump__std____1__shared_ptr(d, value): i = value["__ptr_"] if i.pointer() == 0: diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 52288f07869..c90c1327c48 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -98,6 +98,7 @@ class Dumper(DumperBase): self.startMode_ = None self.processArgs_ = None self.attachPid_ = None + self.deviceUuid_ = None self.dyldImageSuffix = None self.dyldLibraryPath = None self.dyldFrameworkPath = None @@ -903,6 +904,18 @@ class Dumper(DumperBase): return lldb.SBType() + + def nativeStructAlignment(self, nativeType): + #DumperBase.warn("NATIVE ALIGN FOR %s" % nativeType.name) + def handleItem(nativeFieldType, align): + a = self.type_alignment(self.from_native_type(nativeFieldType)) + return a if a > align else align + align = 1 + for f in nativeType.get_fields_array(): + align = handleItem(f.type, align) + return align + + def setupInferior(self, args): """ Set up SBTarget instance """ @@ -918,6 +931,7 @@ class Dumper(DumperBase): self.environment_ = args.get('environment', []) self.environment_ = list(map(lambda x: self.hexdecode(x), self.environment_)) self.attachPid_ = args.get('attachpid', 0) + self.deviceUuid_ = args.get('deviceUuid', '') self.sysRoot_ = args.get('sysroot', '') self.remoteChannel_ = args.get('remotechannel', '') self.platform_ = args.get('platform', '') @@ -942,14 +956,26 @@ class Dumper(DumperBase): if self.startMode_ == DebuggerStartMode.AttachExternal: self.symbolFile_ = '' - self.target = self.debugger.CreateTarget( - self.symbolFile_, None, self.platform_, True, error) + if self.startMode_ == DebuggerStartMode.AttachToIosDevice: + # The script code depends on a target from now on, + # so we already need to attach with the special Apple lldb debugger commands + self.runDebuggerCommand('device select ' + self.deviceUuid_) + self.runDebuggerCommand('device process attach -p ' + str(self.attachPid_)) + self.target = self.debugger.GetSelectedTarget() + else: + self.target = self.debugger.CreateTarget( + self.symbolFile_, None, self.platform_, True, error) if not error.Success(): self.report(self.describeError(error)) self.reportState('enginerunfailed') return + if not self.target: + self.report('Debugger failed to create target.') + self.reportState('enginerunfailed') + return + broadcaster = self.target.GetBroadcaster() listener = self.debugger.GetListener() broadcaster.AddListener(listener, lldb.SBProcess.eBroadcastBitStateChanged) @@ -986,17 +1012,25 @@ class Dumper(DumperBase): and self.platform_ == 'remote-android'): connect_options = lldb.SBPlatformConnectOptions(self.remoteChannel_) - res = self.target.GetPlatform().ConnectRemote(connect_options) + target_platform = self.target.GetPlatform() + + res = target_platform.ConnectRemote(connect_options) + + is_connected = target_platform.IsConnected() + + DumperBase.warn("CONNECT: %s %s target platform: %s connected: %s" + % (res, self.remoteChannel_, target_platform.GetName(), is_connected)) - DumperBase.warn("CONNECT: %s %s platform: %s connected: %s" % (res, - self.remoteChannel_, - self.target.GetPlatform().GetName(), - self.target.GetPlatform().IsConnected())) if not res.Success(): self.report(self.describeError(res)) self.reportState('enginerunfailed') return + if not is_connected: + self.report('Could not connect to debug server') + self.reportState('enginerunfailed') + return + attach_info = lldb.SBAttachInfo(self.attachPid_) self.process = self.target.Attach(attach_info, error) if not error.Success(): @@ -1082,6 +1116,11 @@ class Dumper(DumperBase): self.reportState('enginerunokandinferiorunrunnable') else: self.reportState('enginerunfailed') + elif self.startMode_ == DebuggerStartMode.AttachToIosDevice: + # Already attached in setupInferior (to get a SBTarget), + # just get the process from it + self.process = self.target.GetProcess() + self.reportState('enginerunandinferiorrunok') else: launchInfo = lldb.SBLaunchInfo(self.processArgs_) launchInfo.SetWorkingDirectory(self.workingDirectory_) @@ -1915,16 +1954,20 @@ class Dumper(DumperBase): self.debugger.GetCommandInterpreter().HandleCommand(command, result) self.reportResult('fulltrace="%s"' % self.hexencode(result.GetOutput()), args) - def executeDebuggerCommand(self, args): - self.reportToken(args) + def runDebuggerCommand(self, command): + self.report('Running debugger command "{}"'.format(command)) result = lldb.SBCommandReturnObject() - command = args['command'] self.debugger.GetCommandInterpreter().HandleCommand(command, result) success = result.Succeeded() output = toCString(result.GetOutput()) error = toCString(str(result.GetError())) self.report('success="%d",output="%s",error="%s"' % (success, output, error)) + def executeDebuggerCommand(self, args): + self.reportToken(args) + command = args['command'] + self.runDebuggerCommand(command) + def executeRoundtrip(self, args): self.reportResult('', args) diff --git a/share/qtcreator/debugger/misctypes.py b/share/qtcreator/debugger/misctypes.py index 9099f19a2f7..b570d53c5cb 100644 --- a/share/qtcreator/debugger/misctypes.py +++ b/share/qtcreator/debugger/misctypes.py @@ -1,7 +1,7 @@ # Copyright (C) 2016 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 -from dumper import Children, SubItem +from dumper import Children, SubItem, DumperBase from utils import TypeCode, DisplayFormat import re @@ -586,3 +586,35 @@ def qdump__QtcDumperTest_String(d, value): second = d.hexdecode(d.putSubItem('second', value['second']).value) third = d.hexdecode(d.putSubItem('third', value['third']).value)[:-1] d.putValue(first + ', ' + second + ', ' + third) + + +def qdump__tl__expected(d: DumperBase, value: DumperBase.Value): + # There are issues with correct type handling for enums and pointer in CDB + # preventing type cast from working as expected in these cases + + has_value = False + val = {} + + try: + has_value = value["m_has_val"].integer() != 0 + val = value["m_val"] if has_value else value["m_unexpect"]["m_val"] + except: + okType = value.type[0] + errType = value.type[1] + + # Result and error (and a initialized flag) are packed into a union storage + largerType = max(okType, errType, key=lambda t: t.size()) + storage, has_value = value.split('{{{}}}b'.format(largerType.name)) + val = storage.cast(okType.name) if has_value else storage.cast(errType.name) + + if has_value: + if val.type.name != 'void': + d.putExpandable() + d.putValue('Expected') + else: + d.putExpandable() + d.putValue('Unexpected') + + if d.isExpanded(): + with Children(d): + d.putSubItem('inner', val) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index a0ab08f7eb7..ee23dc33f44 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -5,6 +5,7 @@ import platform import struct import re from dumper import Children, SubItem, UnnamedSubItem, toInteger, DumperBase +from stdtypes import qdump__std__pair from utils import DisplayFormat, TypeCode @@ -420,7 +421,7 @@ def qdump__QDateTime(d, value): d.putExpandable() if d.isExpanded(): with Children(d): - d.putCallItem('toTime_t', 'unsigned int', value, 'toTime_t') + d.putCallItem('toSecsSinceEpoch', 'unsigned long', value, 'toSecsSinceEpoch') if d.canCallLocale(): d.putCallItem('toString', '@QString', value, 'toString', d.enumExpression('DateFormat', 'TextDate')) @@ -917,7 +918,7 @@ def qdump__QFlags(d, value): v = value.cast(enumType.name) size = enumType.size() # One byte is 2 hex digits - d.putValue(v.displayEnum(f'0x%0{2 * size}x')) + d.putValue(v.displayEnum('0x%0{}x'.format(2 * size))) def qform__QHash(): @@ -927,6 +928,13 @@ def qform__QHash(): def qdump__QHash(d, value): qdumpHelper_QHash(d, value, value.type[0], value.type[1]) +def qdump__QMultiHash(d, value): + key_type = value.type[0] + value_type = value.type[1] + if d.qtVersionAtLeast(0x060000): + qdumpHelper_QMultiHash_6(d, value, key_type, value_type) + else: + qdumpHelper_QHash_5(d, value, key_type, value_type) def qdump__QVariantHash(d, value): qdumpHelper_QHash(d, value, d.createType('@QString'), d.createType('@QVariant')) @@ -1032,6 +1040,40 @@ def qdumpHelper_QHash_6(d, value, keyType, valueType): # d.putValue('total: %s item size: %s' % (count, entry_size)) +def qdumpHelper_QMultiHash_6(d, value, key_type, value_type): + dptr, size = d.split('pq', value) + if dptr == 0: + d.putItemCount(0) + return + + ref, _pad, _d_size, buckets, _seed, spans = d.split('i@qqqp', dptr) + + d.check(0 <= size and size <= 100 * 1000 * 1000) + d.check(-1 <= ref and ref < 100000) + d.putItemCount(size) + + if d.isExpanded(): + type_code = '{{{}}}@p'.format(key_type.name) + _pp, entry_size, _fields = d.describeStruct(type_code) + with Children(d, size): + span_size = 128 + 2 * d.ptrSize() # Including tail padding. + nspans = int((buckets + 127) / 128) + count = 0 + for b in range(nspans): + span = spans + b * span_size + offsets, entries, _allocated, _next_free = d.split('128spbb', span) + for i in range(128): + offset = offsets[i] + if offset != 255: # Entry is used + entry = entries + offset * entry_size + key, _pad, chain = d.split(type_code, entry) + next = chain + while next != 0: + val, _pad, next = d.split('{{{}}}@p'.format(value_type.name), next) + d.putPairItem(count, (key, val), 'key', 'value') + count += 1 + + def qform__QHashNode(): return [DisplayFormat.CompactMap] @@ -1216,14 +1258,15 @@ def qdump__QImage(d, value): ref, width, height = d.split('iii', image_data) d.putValue('(%dx%d)' % (width, height)) + if d.qtVersionAtLeast(0x060000): + (ref, width, height, depth, nbytes, pad, devicePixelRatio, _, _, _, + bits, iformat) = d.split('iiiii@dppppi', image_data) + else: + (ref, width, height, depth, nbytes, pad, devicePixelRatio, colorTable, + bits, iformat) = d.split('iiiii@dppi', image_data) + d.putExpandable() if d.isExpanded(): - if d.qtVersionAtLeast(0x060000): - (ref, width, height, depth, nbytes, pad, devicePixelRatio, _, _, _, - bits, iformat) = d.split('iiiii@dppppi', image_data) - else: - (ref, width, height, depth, nbytes, pad, devicePixelRatio, colorTable, - bits, iformat) = d.split('iiiii@dppi', image_data) with Children(d): d.putIntItem('width', width) d.putIntItem('height', height) @@ -1492,9 +1535,11 @@ if False: d.putSpecialValue('minimumitemcount', 0) -# FIXME: Qt 5 -# remvign the _xxxx makes GDB work with Qt 5 but breaks LLDB -def qdump__QPair_xxxx(d, value): +def qdump__QPair(d, value): + if d.qtVersionAtLeast(0x060000): + qdump__std__pair(d, value) # `QPair` is just an alias for `std::pair` in Qt6 + return + typeCode = '{%s}@{%s}' % (value.type[0].name, value.type[1].name) first, pad, second = value.split(typeCode) with Children(d): diff --git a/share/qtcreator/debugger/stdtypes.py b/share/qtcreator/debugger/stdtypes.py index b825195311a..2de5d6a3ba4 100644 --- a/share/qtcreator/debugger/stdtypes.py +++ b/share/qtcreator/debugger/stdtypes.py @@ -1,6 +1,25 @@ # Copyright (C) 2016 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +# Disclaimers: +# 1. Looking up the allocator template type is potentially an expensive operation. +# A better alternative would be finding out the allocator type +# through accessing a class member. +# However due to different implementations doing things very differently +# it is deemed acceptable. +# Specifically: +# * GCC's `_Rb_tree_impl` basically inherits from the allocator, the comparator +# and the sentinel node +# * Clang packs the allocator and the sentinel node into a compressed pair, +# so depending on whether the allocator is sized or not, +# there may or may not be a member to access +# * MSVC goes even one step further and stores the allocator and the sentinel node together +# in a compressed pair, which in turn is stored together with the comparator inside +# another compressed pair +# 2. `size` on an empty type, which the majority of the allocators are of, +# for whatever reason reports 1. In theory there can be allocators whose type is truly 1 byte, +# in which case we will have issues, but in practice they should be rather rare. + from utils import DisplayFormat from dumper import Children, SubItem, DumperBase @@ -94,7 +113,13 @@ def qdumpHelper__std__deque__libstdcxx(d, value): pcur = pfirst def qdumpHelper__std__deque__libcxx(d, value): - mptr, mfirst, mbegin, mend, start, size = value.split("pppptt") + alloc_type = value.type[1] # see disclaimer #1 + alloc_size = alloc_type.size() + # see disclaimer #2 + if alloc_size > 1: + mptr, mfirst, mbegin, mend, alloc, start, size = value.split('pppp{{{}}}tt'.format(alloc_type.name)) + else: + mptr, mfirst, mbegin, mend, start, size = value.split("pppptt") d.check(0 <= size and size <= 1000 * 1000 * 1000) d.putItemCount(size) if d.isExpanded(): @@ -160,7 +185,11 @@ def qdumpHelper__std__deque__msvc(d, value): else: bufsize = 1 - (proxy, map, mapsize, myoff, mysize) = value.split("ppppp") + alloc_size = value.type[1].size() # see disclaimer #1 + # see disclaimer #2 + offset = alloc_size if alloc_size > 1 else 0 + core = d.createValue(value.address() + offset, value.type) + (proxy, map, mapsize, myoff, mysize) = core.split("ppppp") d.check(0 <= mapsize and mapsize <= 1000 * 1000 * 1000) d.putItemCount(mysize) @@ -221,10 +250,14 @@ def qdump__std__list__QNX(d, value): d.isDebugBuild = True except Exception: d.isDebugBuild = False + + alloc_size = value.type[1].size() # see disclaimer #1 + # see disclaimer #2 + offset = alloc_size if alloc_size > 1 else 0 if d.isDebugBuild: - (proxy, head, size) = value.split("ppp") - else: - (head, size) = value.split("pp") + offset += d.ptrSize() # _Myval2.Myproxy + core = d.createValue(value.address() + offset, value.type) + (head, size) = core.split("pp") d.putItemCount(size, 1000) @@ -331,10 +364,13 @@ def qdump_std__map__helper(d, value): d.isDebugBuild = True except Exception: d.isDebugBuild = False + alloc_size = value.type[3].size() # see disclaimer #1 + # see disclaimer #2 + offset = alloc_size if alloc_size > 1 else 0 if d.isDebugBuild: - (proxy, head, size) = value.split("ppp") - else: - (head, size) = value.split("pp") + offset += d.ptrSize() # _Myval2.Myproxy + core = d.createValue(value.address() + offset, value.type) + (head, size) = core.split("pp") d.check(0 <= size and size <= 100 * 1000 * 1000) d.putItemCount(size) if d.isExpanded(): @@ -448,7 +484,35 @@ def qdump__std__map__iterator(d, value): def qdump____gnu_debug___Safe_iterator(d, value): - d.putItem(value["_M_current"]) + node = value["_M_node"].dereference() + d.putExpandable() + d.putEmptyValue() + if d.isExpanded(): + with Children(d): + real_iterator_type = value.type[0] # std::_Rb_tree_iterator or std::_Rb_tree_iterator> + inner_type = real_iterator_type[0] # T or std::pair + is_map = inner_type.name.startswith('std::pair') + if is_map: + key_type = inner_type[0] + value_type = inner_type[1] + typecode = 'pppp@{{{}}}@{{{}}}'.format(key_type.name, value_type.name) + (color, parent, left, right, pad1, key, pad2, value) = d.split(typecode, node) + d.putSubItem("first", key) + d.putSubItem("second", value) + else: + typecode = 'pppp@{{{}}}'.format(inner_type.name) + (color, parent, left, right, pad1, key) = d.split(typecode, node) + d.putSubItem("value", key) + with SubItem(d, "[node]"): + d.putExpandable() + d.putEmptyValue() + d.putType(" ") + if d.isExpanded(): + with Children(d): + nodeType = node.type.pointer() + d.putSubItem("left", d.createValue(left, nodeType)) + d.putSubItem("right", d.createValue(right, nodeType)) + d.putSubItem("parent", d.createValue(parent, nodeType)) def qdump__std__map__const_iterator(d, value): @@ -531,10 +595,14 @@ def qdump__std__set__QNX(d, value): d.isDebugBuild = True except Exception: d.isDebugBuild = False + + alloc_size = value.type[2].size() # see disclaimer #1 + # see disclaimer #2 + offset = alloc_size if alloc_size > 1 else 0 if d.isDebugBuild: - (proxy, head, size) = value.split("ppp") - else: - (head, size) = value.split("pp") + offset += d.ptrSize() # _Myval2.Myproxy + core = d.createValue(value.address() + offset, value.type) + (head, size) = core.split("pp") d.check(0 <= size and size <= 100 * 1000 * 1000) d.putItemCount(size) if d.isExpanded(): @@ -812,10 +880,14 @@ def qdump__std__unordered_map(d, value): d.isDebugBuild = True except Exception: d.isDebugBuild = False + + alloc_size = value.type[4].size() # see disclaimer #1 + # see disclaimer #2 + offset = alloc_size if alloc_size > 1 else 0 if d.isDebugBuild: - (_, start, size) = _list.split("ppp") - else: - (start, size) = _list.split("pp") + offset += d.ptrSize() # _Myval2.Myproxy + core = d.createValue(_list.address() + offset, _list.type) + (start, size) = core.split("pp") else: try: # gcc ~= 4.7 @@ -1055,12 +1127,16 @@ def qdumpHelper__std__vector__msvc(d, value): d.isDebugBuild = True except RuntimeError: d.isDebugBuild = False + + alloc_size = value.type[1].size() # see disclaimer #1 + # see disclaimer #2 + offset = alloc_size if alloc_size > 1 else 0 if d.isDebugBuild: - proxy1, proxy2, start, finish, alloc, size = value.split("pppppi") - else: - start, finish, alloc, size = value.split("pppi") + offset += 2 * d.ptrSize() # _Myproxy and _MyVal2._Myproxy + core = d.createValue(value.address() + offset, value.type) + first, last, end, size = core.split("pppi") d.check(0 <= size and size <= 1000 * 1000 * 1000) - qdumpHelper__std__vector__bool(d, start, size, inner_type) + qdumpHelper__std__vector__bool(d, first, size, inner_type) else: if d.isDebugBuild is None: try: @@ -1068,13 +1144,17 @@ def qdumpHelper__std__vector__msvc(d, value): d.isDebugBuild = True except RuntimeError: d.isDebugBuild = False + + alloc_size = value.type[1].size() # see disclaimer #1 + # see disclaimer #2 + offset = alloc_size if alloc_size > 1 else 0 if d.isDebugBuild: - proxy, start, finish, alloc = value.split("pppp") - else: - start, finish, alloc = value.split("ppp") - size = (finish - start) // inner_type.size() + offset += d.ptrSize() # _MyVal2._Myproxy + core = d.createValue(value.address() + offset, value.type) + first, last, end = core.split('ppp') + size = (last - first) // inner_type.size() d.check(0 <= size and size <= 1000 * 1000 * 1000) - qdumpHelper__std__vector__nonbool(d, start, finish, alloc, inner_type) + qdumpHelper__std__vector__nonbool(d, first, last, end, inner_type) def qform__std____debug__vector(): diff --git a/share/qtcreator/debugger/utils.py b/share/qtcreator/debugger/utils.py index 8019d1e530a..9cd4a8822ec 100644 --- a/share/qtcreator/debugger/utils.py +++ b/share/qtcreator/debugger/utils.py @@ -15,8 +15,10 @@ class DebuggerStartMode(): AttachCore, AttachToRemoteServer, AttachToRemoteProcess, + AttachToQmlServer, StartRemoteProcess, - ) = range(0, 9) + AttachToIosDevice + ) = range(0, 11) # Known special formats. Keep in sync with DisplayFormat in debuggerprotocol.h diff --git a/share/qtcreator/lua-plugins/luals/luals.lua b/share/qtcreator/lua-plugins/luals/luals.lua index f14c88f4fe0..2489998bf55 100644 --- a/share/qtcreator/lua-plugins/luals/luals.lua +++ b/share/qtcreator/lua-plugins/luals/luals.lua @@ -2,7 +2,8 @@ -- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 return { Id = "lualanguageserver", - Name = "Lua Language Server", + DisplayName = "Lua Language Server", + Name = "LuaLanguageServer", Version = "1.0.0", CompatVersion = "1.0.0", VendorId = "theqtcompany", diff --git a/share/qtcreator/lua-plugins/luatests/luatests.lua b/share/qtcreator/lua-plugins/luatests/luatests.lua index ba2ec28f42e..41094780bf9 100644 --- a/share/qtcreator/lua-plugins/luatests/luatests.lua +++ b/share/qtcreator/lua-plugins/luatests/luatests.lua @@ -2,7 +2,8 @@ -- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 return { Id = "luatests", - Name = "Lua Tests", + DisplayName = "Lua Tests", + Name = "LuaTests", Version = "1.0.0", CompatVersion = "1.0.0", VendorId = "theqtcompany", diff --git a/share/qtcreator/lua-plugins/rustls/rustls.lua b/share/qtcreator/lua-plugins/rustls/rustls.lua index b3a1d6de598..df90fd085cf 100644 --- a/share/qtcreator/lua-plugins/rustls/rustls.lua +++ b/share/qtcreator/lua-plugins/rustls/rustls.lua @@ -2,7 +2,8 @@ -- SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 return { Id = "rustlanguageserver", - Name = "Rust Language Server", + DisplayName = "Rust Language Server", + Name = "RustLanguageServer", Version = "1.0.0", CompatVersion = "1.0.0", VendorId = "theqtcompany", diff --git a/share/qtcreator/lua-plugins/tellajoke/tellajoke.lua b/share/qtcreator/lua-plugins/tellajoke/tellajoke.lua index b409d04b037..2f72952881d 100644 --- a/share/qtcreator/lua-plugins/tellajoke/tellajoke.lua +++ b/share/qtcreator/lua-plugins/tellajoke/tellajoke.lua @@ -42,7 +42,8 @@ end return { Id = "tellajoke", - Name = "Tell A Joke", + DisplayName = "Tell a Joke", + Name = "TellAJoke", Version = "1.0.0", CompatVersion = "1.0.0", VendorId = "theqtcompany", diff --git a/share/qtcreator/qml-type-descriptions/qbs.qmltypes b/share/qtcreator/qml-type-descriptions/qbs.qmltypes index 49d40b3f47a..7f829630e95 100644 --- a/share/qtcreator/qml-type-descriptions/qbs.qmltypes +++ b/share/qtcreator/qml-type-descriptions/qbs.qmltypes @@ -184,6 +184,7 @@ Module { prototype: "QQuickItem" Property { name: "alwaysRun"; type: "bool" } Property { name: "auxiliaryInputs"; type: "string"; isList: true } + Property { name: "auxiliaryInputsFromDependencies"; type: "string"; isList: true } Property { name: "condition"; type: "bool" } Property { name: "excludedAuxiliaryInputs"; type: "string"; isList: true } Property { name: "excludedInputs"; type: "string"; isList: true } diff --git a/share/qtcreator/qmldesigner/studio_templates/files/qtuiquickform/wizard.json b/share/qtcreator/qmldesigner/studio_templates/files/qtuiquickform/wizard.json index 26c628f4b31..4a721580d43 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/qtuiquickform/wizard.json +++ b/share/qtcreator/qmldesigner/studio_templates/files/qtuiquickform/wizard.json @@ -9,7 +9,7 @@ "icon": "file_ui.png", "platformIndependent": true, - "enabled": "%{JS: value('Plugins').indexOf('QmlJSEditor') >= 0}", + "enabled": "%{JS: isPluginRunning('qmljseditor')}", "options" : [ { "key": "QmlFile", "value": "%{Class}.%{JS: Util.preferredSuffix('text/x-qml')}" }, { "key": "UiFile", "value": "%{FormClass}.%{JS: Util.preferredSuffix('application/x-qt.ui+qml')}" }, diff --git a/share/qtcreator/qmldesigner/studio_templates/files/scxml/wizard.json b/share/qtcreator/qmldesigner/studio_templates/files/scxml/wizard.json index 36bbda7b71e..3c0cf0cdce4 100644 --- a/share/qtcreator/qmldesigner/studio_templates/files/scxml/wizard.json +++ b/share/qtcreator/qmldesigner/studio_templates/files/scxml/wizard.json @@ -8,7 +8,7 @@ "trDisplayCategory": "Modeling", "iconText": "scxml", "platformIndependent": true, - "enabled": "%{JS: value('Plugins').indexOf('ScxmlEditor') >= 0}", + "enabled": "%{JS: isPluginRunning('scxmleditor')}", "options": [ diff --git a/share/qtcreator/styles/creator-dark.xml b/share/qtcreator/styles/creator-dark.xml index 088feb7a2ed..275290c4319 100644 --- a/share/qtcreator/styles/creator-dark.xml +++ b/share/qtcreator/styles/creator-dark.xml @@ -68,6 +68,8 @@