Merge remote-tracking branch 'origin/16.0' into HEAD

solved conflicts in:
	cmake/Utils.cmake
	src/libs/sqlite/sqliteids.h
	src/libs/utils/filepath.cpp
	src/plugins/effectcomposer/effectcomposermodel.cpp
	src/plugins/effectcomposer/effectcomposerview.cpp
	src/plugins/effectcomposer/effectshaderscodeeditor.h
	src/plugins/mcusupport/mcubuildstep.cpp
	src/plugins/qmldesigner/components/assetslibrary/assetslibrarywidget.cpp
	src/plugins/qmldesigner/components/devicesharing/devicemanager.cpp
	src/plugins/qmldesigner/qmldesignerprojectmanager.cpp
	src/plugins/qmlprojectmanager/qmlprojectexporter/resourcegenerator.cpp

Change-Id: Ia2f6ccfd39007dad1cb8317f5ac878109621aaa2
This commit is contained in:
Tim Jenssen
2025-02-17 19:06:31 +01:00
1933 changed files with 31729 additions and 27793 deletions

View File

@@ -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$<$<CONFIG:Debug>:Debug>")
endif()
find_package(Qt6 OPTIONAL_COMPONENTS Quick QuickWidgets Designer DesignerComponentsPrivate
Help SerialPort Svg Tools LinguistTools QUIET)
find_package(Threads)
find_package(Clang QUIET)

View File

@@ -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"
}
}

View File

@@ -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.

View File

@@ -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)

View File

@@ -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)

View File

@@ -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.

View File

@@ -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 "$<TARGET_BUNDLE_DIR:${target}>.${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.

View File

@@ -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}")

View File

@@ -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

314
dist/changelog/changes-16.0.0.md vendored Normal file
View File

@@ -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
<https://code.qt.io/cgit/qt-creator/qt-creator.git/log/?id=15.0..v16.0.0>
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 <name>`
([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

View File

@@ -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

View File

@@ -14,6 +14,7 @@ macro.key = "\\b"
macro.menu = "\\b"
macro.macos = "macOS"
macro.note = "\\b{Note:}"
macro.nullptr = "\\c{nullptr}"
macro.oslash.HTML = "&oslash;"
macro.ouml.HTML = "&ouml;"
macro.B2Q = "Boot to Qt"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

@@ -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}

View File

@@ -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 <name>}
\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=<Coco directory>
\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 <other options> -C <project dir>/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}
*/

View File

@@ -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}

View File

@@ -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},

View File

@@ -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
*/

View File

@@ -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}
*/

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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

View File

@@ -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:

View File

@@ -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}

View File

@@ -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.

View File

@@ -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

View File

@@ -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}
*/
/*!

View File

@@ -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

View File

@@ -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

View File

@@ -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:

View File

@@ -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:

View File

@@ -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.

View File

@@ -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}.

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}
*/

View File

@@ -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)

View File

@@ -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}
*/

View File

@@ -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}

View File

@@ -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

View File

@@ -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}
*/

View File

@@ -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}
*/

View File

@@ -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}
*/

View File

@@ -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}
*/

View File

@@ -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}
*/

View File

@@ -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}
*/

View File

@@ -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},

View File

@@ -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 <hash>}
\li Add a tag reference to the change.
\li
\row
\li \uicontrol {Checkout <hash>}
\li Check out the commit in a headless state.
\li
\row
\li \uicontrol {Cherry-Pick <hash>}
\li Cherry-pick the selected commit to the current branch.
\li
\row
\li \uicontrol {Create branch from <hash>}
\li Create a branch based on the commit.
\li \l {git branch}
\row
\li \uicontrol {Copy <hash>}
\li Copy the commit's <hash> to the clipboard.
\li
\row
\li \uicontrol {Describe Change <hash>}
\li View a description of the change including the diff in the
\uicontrol {Git Show} view.
\li
\row
\li \uicontrol {Diff Against <hash>}
\li Show the changes between the commit and the current HEAD.
\li \l {git diff}
\row
\li \uicontrol {Interactive Rebase from <hash>}
\li Rebase the current branch on top of <hash>, and choose what to do
with each commit.
\li \l {Interactive rebase}
\row
\li \uicontrol {Log for <hash>}
\li Show the versioning history the commit.
\li
\row
\li \uicontrol {Reset to Change <hash>}
\li Reset the working directory to the commit.
\li \l {git reset}
\row
\li \uicontrol {Revert <hash>}
\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 <hash>}.
\li
\row
\li \uicontrol {Diff Against Saved <hash>}
\li Show the changes between the commit and the saved <hash>.
\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 <hash>} 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 <hash>} 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 <hash>} 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 <hash>

View File

@@ -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

View File

@@ -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
*/

View File

@@ -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

View File

@@ -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);

View File

@@ -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

View File

@@ -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)

View File

@@ -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')

View File

@@ -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:

View File

@@ -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

View File

@@ -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<std::__1::pair<const int, int>>` 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:

View File

@@ -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)

View File

@@ -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)

View File

@@ -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):

View File

@@ -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<T> or std::_Rb_tree_iterator<std::pair<K, V>>
inner_type = real_iterator_type[0] # T or std::pair<K, V>
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():

View File

@@ -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

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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",

View File

@@ -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 }

View File

@@ -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')}" },

View File

@@ -8,7 +8,7 @@
"trDisplayCategory": "Modeling",
"iconText": "scxml",
"platformIndependent": true,
"enabled": "%{JS: value('Plugins').indexOf('ScxmlEditor') >= 0}",
"enabled": "%{JS: isPluginRunning('scxmleditor')}",
"options":
[

View File

@@ -68,6 +68,8 @@
<style name="LogCommitHash" foreground="#ff0000"/>
<style name="LogCommitSubject" foreground="#d6cf9a"/>
<style name="LogDecoration" foreground="#ff00ff"/>
<style name="Info" underlineColor="#b6aef1" underlineStyle="DashUnderline"/>
<style name="InfoContext" underlineColor="#b6aef1" underlineStyle="Dotline"/>
<style name="Warning" underlineColor="#d6c545" underlineStyle="SingleUnderline"/>
<style name="WarningContext" underlineColor="#d6c545" underlineStyle="DotLine"/>
<style name="Error" underlineColor="#d65645" underlineStyle="SingleUnderline"/>

View File

@@ -68,6 +68,8 @@
<style name="LogCommitHash" foreground="#ff0000"/>
<style name="LogCommitSubject" foreground="#d6cf9a"/>
<style name="LogDecoration" foreground="#ff00ff"/>
<style name="Info" underlineColor="#b6aef1" underlineStyle="DashUnderline"/>
<style name="InfoContext" underlineColor="#b6aef1" underlineStyle="DotLine"/>
<style name="Warning" underlineColor="#d6c545" underlineStyle="SingleUnderline"/>
<style name="WarningContext" underlineColor="#d6c545" underlineStyle="DotLine"/>
<style name="Error" underlineColor="#d65645" underlineStyle="SingleUnderline"/>

View File

@@ -70,4 +70,6 @@
<style name="LogCommitHash" foreground="#ff0000"/>
<style name="LogCommitSubject" foreground="#d6cf9a"/>
<style name="LogDecoration" foreground="#ff00ff"/>
<style name="Info" underlineColor="#b6aef1" underlineStyle="DashUnderline"/>
<style name="InfoContext" underlineColor="#b6aef1" underlineStyle="DotLine"/>
</style-scheme>

View File

@@ -59,6 +59,8 @@
<style name="DiffDestLine" background="#dfffdf"/>
<style name="DiffDestChar" background="#afffaf"/>
<style name="LogChangeLine" foreground="#c00000"/>
<style name="Info" underlineColor="#262088" underlineStyle="DashUnderline"/>
<style name="InfoContext" underlineColor="#262088" underlineStyle="DotLine"/>
<style name="Warning" underlineColor="#ffbe00" underlineStyle="SingleUnderline"/>
<style name="WarningContext" underlineColor="#ffbe00" underlineStyle="DotLine"/>
<style name="Error" underlineColor="#ff0000" underlineStyle="SingleUnderline"/>

Some files were not shown because too many files have changed in this diff Show More