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
@@ -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)
|
||||
|
||||
|
@@ -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"
|
||||
}
|
||||
}
|
||||
|
@@ -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.
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
@@ -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.
|
||||
|
@@ -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.
|
||||
|
@@ -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}")
|
||||
|
@@ -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
@@ -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
|
7
dist/changelog/template.md
vendored
@@ -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
|
||||
|
@@ -14,6 +14,7 @@ macro.key = "\\b"
|
||||
macro.menu = "\\b"
|
||||
macro.macos = "macOS"
|
||||
macro.note = "\\b{Note:}"
|
||||
macro.nullptr = "\\c{nullptr}"
|
||||
macro.oslash.HTML = "ø"
|
||||
macro.ouml.HTML = "ö"
|
||||
macro.B2Q = "Boot to Qt"
|
||||
|
Before Width: | Height: | Size: 7.5 KiB |
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 7.2 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 3.8 KiB |
BIN
doc/qtcreator/images/qtcreator-git-amend.webp
Normal file
After Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 3.1 KiB |
Before Width: | Height: | Size: 4.8 KiB |
BIN
doc/qtcreator/images/qtcreator-preferences-axivion.webp
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
doc/qtcreator/images/qtcreator-preferences-debugger-cdb.webp
Normal file
After Width: | Height: | Size: 5.3 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 4.1 KiB |
BIN
doc/qtcreator/images/qtcreator-preferences-kits.webp
Normal file
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 7.8 KiB |
BIN
doc/qtcreator/images/qtcreator-preferences-windows-app-sdk.webp
Normal file
After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.3 KiB |
BIN
doc/qtcreator/images/qtcreator-projects-settings-build-coco.webp
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
doc/qtcreator/images/qtcreator-projects-settings-coco.webp
Normal file
After Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 9.9 KiB |
@@ -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}
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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}
|
||||
|
||||
|
@@ -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},
|
||||
|
35
doc/qtcreator/src/creator-how-to-set-up-winappsdk.qdoc
Normal 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
|
||||
*/
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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.
|
||||
|
@@ -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.
|
||||
|
@@ -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.
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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:
|
||||
|
@@ -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}
|
||||
|
@@ -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.
|
||||
|
@@ -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
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
||||
/*!
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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:
|
||||
|
||||
|
@@ -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:
|
||||
|
||||
|
@@ -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.
|
||||
|
@@ -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}.
|
||||
|
@@ -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"
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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)
|
||||
|
@@ -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}
|
||||
*/
|
@@ -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}
|
||||
|
@@ -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
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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}
|
||||
*/
|
||||
|
@@ -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},
|
||||
|
@@ -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>
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
*/
|
||||
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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)
|
||||
|
||||
|
@@ -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')
|
||||
|
@@ -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:
|
||||
|
@@ -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
|
||||
|
@@ -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:
|
||||
|
@@ -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)
|
||||
|
||||
|
@@ -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)
|
||||
|
@@ -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):
|
||||
|
@@ -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():
|
||||
|
@@ -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
|
||||
|
@@ -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",
|
||||
|
@@ -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",
|
||||
|
@@ -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",
|
||||
|
@@ -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",
|
||||
|
@@ -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 }
|
||||
|
@@ -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')}" },
|
||||
|
@@ -8,7 +8,7 @@
|
||||
"trDisplayCategory": "Modeling",
|
||||
"iconText": "scxml",
|
||||
"platformIndependent": true,
|
||||
"enabled": "%{JS: value('Plugins').indexOf('ScxmlEditor') >= 0}",
|
||||
"enabled": "%{JS: isPluginRunning('scxmleditor')}",
|
||||
|
||||
"options":
|
||||
[
|
||||
|
@@ -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"/>
|
||||
|
@@ -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"/>
|
||||
|
@@ -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>
|
||||
|
@@ -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"/>
|
||||
|