forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/9.0' into qds/dev
Change-Id: I5e66666644fd16de60a0158e5e884706622ae3ba
This commit is contained in:
52
.github/workflows/build_cmake.yml
vendored
52
.github/workflows/build_cmake.yml
vendored
@@ -7,7 +7,7 @@ on:
|
||||
- 'doc/**'
|
||||
|
||||
env:
|
||||
QT_VERSION: 6.3.2
|
||||
QT_VERSION: 6.4.1
|
||||
CLANG_VERSION: 15.0.0
|
||||
ELFUTILS_VERSION: 0.175
|
||||
CMAKE_VERSION: 3.21.1
|
||||
@@ -51,7 +51,7 @@ jobs:
|
||||
}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Checkout submodules
|
||||
run: |
|
||||
git submodule set-url -- perfparser https://code.qt.io/qt-creator/perfparser.git
|
||||
@@ -211,7 +211,7 @@ jobs:
|
||||
|
||||
# Save the path for other steps
|
||||
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/qt6/${qt_dir_prefix}" qt_dir)
|
||||
message("::set-output name=qt_dir::${qt_dir}")
|
||||
file(APPEND "$ENV{GITHUB_OUTPUT}" "qt_dir=${qt_dir}")
|
||||
|
||||
function(downloadAndExtract url archive)
|
||||
foreach(qt_mirror $ENV{QT_MIRRORS})
|
||||
@@ -378,7 +378,7 @@ jobs:
|
||||
|
||||
# Save the path for other steps
|
||||
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/libclang" libclang_dir)
|
||||
message("::set-output name=libclang_dir::${libclang_dir}")
|
||||
file(APPEND "$ENV{GITHUB_OUTPUT}" "libclang_dir=${libclang_dir}")
|
||||
|
||||
- name: Download elfutils
|
||||
if: runner.os == 'Windows' && matrix.config.is_msvc || runner.os == 'Linux'
|
||||
@@ -414,7 +414,7 @@ jobs:
|
||||
|
||||
# Save the path for other steps
|
||||
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/elfutils" elfutils_dir)
|
||||
message("::set-output name=elfutils_dir::${elfutils_dir}")
|
||||
file(APPEND "$ENV{GITHUB_OUTPUT}" "elfutils_dir=${elfutils_dir}")
|
||||
|
||||
- name: Download ccache
|
||||
shell: cmake -P {0}
|
||||
@@ -437,7 +437,7 @@ jobs:
|
||||
include(${github_workspace}/cmake/QtCreatorIDEBranding.cmake)
|
||||
string(REPLACE "." ";" IDE_VERSION_LIST ${IDE_VERSION_DISPLAY})
|
||||
list(GET IDE_VERSION_LIST 0 IDE_VERSION_MAJOR)
|
||||
message("::set-output name=archive_name::ccache-${{ matrix.config.os }}-${{ matrix.config.cc }}-qtc${IDE_VERSION_MAJOR}")
|
||||
file(APPEND "$ENV{GITHUB_OUTPUT}" "archive_name=ccache-${{ matrix.config.os }}-${{ matrix.config.cc }}-qtc${IDE_VERSION_MAJOR}")
|
||||
|
||||
- name: Download ccache archive
|
||||
shell: cmake -P {0}
|
||||
@@ -639,34 +639,34 @@ jobs:
|
||||
endif()
|
||||
|
||||
- name: Upload
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: build/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||
|
||||
- name: Upload Devel
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: build/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
|
||||
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
|
||||
|
||||
- name: Upload wininterrupt
|
||||
if: runner.os == 'Windows'
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: build/wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||
name: wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||
|
||||
- name: Upload qtcreatorcdbext
|
||||
if: runner.os == 'Windows' && matrix.config.is_msvc
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: build/qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||
name: qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||
|
||||
- name: Upload disk image
|
||||
if: runner.os == 'macOS' && contains(github.ref, 'tags/v')
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: build/qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
|
||||
name: qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
|
||||
@@ -676,7 +676,7 @@ jobs:
|
||||
run: cmake -E tar cf ../${{ steps.ccache.outputs.archive_name }}.tar .
|
||||
|
||||
- name: Upload ccache archive
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: ./${{ steps.ccache.outputs.archive_name }}.tar
|
||||
name: ${{ steps.ccache.outputs.archive_name }}
|
||||
@@ -689,7 +689,7 @@ jobs:
|
||||
steps:
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: actions/create-release@v1.0.0
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
@@ -702,7 +702,7 @@ jobs:
|
||||
run: |
|
||||
echo "${{ steps.create_release.outputs.upload_url }}" > ./upload_url
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: ./upload_url
|
||||
name: upload_url
|
||||
@@ -735,50 +735,50 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Download artifact
|
||||
uses: actions/download-artifact@v2
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||
path: ./
|
||||
|
||||
- name: Download Devel artifact
|
||||
uses: actions/download-artifact@v2
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
|
||||
path: ./
|
||||
|
||||
- name: Download wininterrupt artifact
|
||||
if: contains(matrix.config.artifact, 'Windows')
|
||||
uses: actions/download-artifact@v2
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||
path: ./
|
||||
|
||||
- name: Download qtcreatorcdbext artifact
|
||||
if: matrix.config.artifact == 'Windows-MSVC'
|
||||
uses: actions/download-artifact@v2
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||
path: ./
|
||||
|
||||
- name: Download disk image artifact
|
||||
if: matrix.config.artifact == 'macOS'
|
||||
uses: actions/download-artifact@v2
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
|
||||
path: ./
|
||||
|
||||
- name: Download URL
|
||||
uses: actions/download-artifact@v2
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: upload_url
|
||||
path: ./
|
||||
- id: set_upload_url
|
||||
run: |
|
||||
upload_url=`cat ./upload_url`
|
||||
echo ::set-output name=upload_url::$upload_url
|
||||
echo upload_url=$upload_url >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Upload to Release
|
||||
uses: actions/upload-release-asset@v1.0.1
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
@@ -788,7 +788,7 @@ jobs:
|
||||
asset_content_type: application/x-gtar
|
||||
|
||||
- name: Upload Devel to Release
|
||||
uses: actions/upload-release-asset@v1.0.1
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
@@ -799,7 +799,7 @@ jobs:
|
||||
|
||||
- name: Upload wininterrupt to Release
|
||||
if: contains(matrix.config.artifact, 'Windows')
|
||||
uses: actions/upload-release-asset@v1.0.1
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
@@ -810,7 +810,7 @@ jobs:
|
||||
|
||||
- name: Upload qtcreatorcdbext to Release
|
||||
if: matrix.config.artifact == 'Windows-MSVC'
|
||||
uses: actions/upload-release-asset@v1.0.1
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
@@ -821,7 +821,7 @@ jobs:
|
||||
|
||||
- name: Upload disk image to Release
|
||||
if: matrix.config.artifact == 'macOS'
|
||||
uses: actions/upload-release-asset@v1.0.1
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
set(IDE_VERSION "9.0.82") # The IDE version.
|
||||
set(IDE_VERSION_COMPAT "9.0.82") # The IDE Compatibility version.
|
||||
set(IDE_VERSION_DISPLAY "10.0.0-beta1") # The IDE display version.
|
||||
set(IDE_VERSION "9.0.1") # The IDE version.
|
||||
set(IDE_VERSION_COMPAT "9.0.0") # The IDE Compatibility version.
|
||||
set(IDE_VERSION_DISPLAY "9.0.1") # The IDE display version.
|
||||
set(IDE_COPYRIGHT_YEAR "2022") # The IDE current copyright year.
|
||||
|
||||
set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation.
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
type: Group
|
||||
instructions:
|
||||
- type: MakeDirectory
|
||||
directory: "{{.AgentWorkingDir}}/build/qt_temp"
|
||||
|
||||
- type: Group
|
||||
instructions:
|
||||
- type: ExecuteCommand
|
||||
|
||||
@@ -10,7 +10,7 @@ instructions:
|
||||
variableValue: http://master.qt.io/development_releases/prebuilt/libclang/libclang-release_15.0.0-based
|
||||
- type: EnvironmentVariable
|
||||
variableName: QTC_QT_BASE_URL
|
||||
variableValue: "http://ci-files02-hki.intra.qt.io/packages/jenkins/archive/qt/6.3/6.3.2-final-released/Qt"
|
||||
variableValue: "http://ci-files02-hki.intra.qt.io/packages/jenkins/archive/qt/6.4/6.4.1-released/Qt"
|
||||
- type: EnvironmentVariable
|
||||
variableName: QTC_QT_MODULES
|
||||
variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquickcontrols2 qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine"
|
||||
|
||||
@@ -41,7 +41,7 @@ instructions:
|
||||
property: host.os
|
||||
in_values: [MacOS, Linux]
|
||||
- type: ExecuteCommand
|
||||
command: "python3 -u {{.AgentWorkingDir}}/build/qtsdk/packaging-tools/install_qt.py --qt-path {{.AgentWorkingDir}}/build/qt_install_dir --temp-path {{.AgentWorkingDir}}/build/qt_temp --base-url {{.Env.QTC_QT_BASE_URL}} --base-url-postfix={{.Env.QTC_QT_POSTFIX}} --icu7z http://master.qt.io/development_releases/prebuilt/icu/prebuilt/56.1/icu-linux-g++-Rhel7.2-x64.7z {{.Env.QTC_QT_MODULES}}"
|
||||
command: "python3 -u {{.AgentWorkingDir}}/build/qtsdk/packaging-tools/install_qt.py --qt-path {{.AgentWorkingDir}}/build/qt_install_dir --base-url {{.Env.QTC_QT_BASE_URL}} --base-url-postfix={{.Env.QTC_QT_POSTFIX}} --icu7z http://master.qt.io/development_releases/prebuilt/icu/prebuilt/56.1/icu-linux-g++-Rhel7.2-x64.7z {{.Env.QTC_QT_MODULES}}"
|
||||
executeCommandArgumentSplitingBehavior: SplitAfterVariableSubstitution
|
||||
maxTimeInSeconds: 3600
|
||||
maxTimeBetweenOutput: 360
|
||||
@@ -51,7 +51,7 @@ instructions:
|
||||
property: host.os
|
||||
equals_value: Linux
|
||||
- type: ExecuteCommand
|
||||
command: "python3 -u {{.AgentWorkingDir}}/build/qtsdk/packaging-tools/install_qt.py --qt-path {{.AgentWorkingDir}}/build/qt_install_dir --temp-path {{.AgentWorkingDir}}/build/qt_temp --base-url {{.Env.QTC_QT_BASE_URL}} --base-url-postfix={{.Env.QTC_QT_POSTFIX}} {{.Env.QTC_QT_MODULES}}"
|
||||
command: "python3 -u {{.AgentWorkingDir}}/build/qtsdk/packaging-tools/install_qt.py --qt-path {{.AgentWorkingDir}}/build/qt_install_dir --base-url {{.Env.QTC_QT_BASE_URL}} --base-url-postfix={{.Env.QTC_QT_POSTFIX}} {{.Env.QTC_QT_MODULES}}"
|
||||
executeCommandArgumentSplitingBehavior: SplitAfterVariableSubstitution
|
||||
maxTimeInSeconds: 3600
|
||||
maxTimeBetweenOutput: 360
|
||||
@@ -70,7 +70,7 @@ instructions:
|
||||
property: host.os
|
||||
equals_value: Windows
|
||||
- type: ExecuteCommand
|
||||
command: "python -u {{.AgentWorkingDir}}/build/qtsdk/packaging-tools/install_qt.py --qt-path {{.AgentWorkingDir}}/build/qt_install_dir --temp-path {{.AgentWorkingDir}}/build/qt_temp --base-url {{.Env.QTC_QT_BASE_URL}} --base-url-postfix={{.Env.QTC_QT_POSTFIX}} --opengl32sw7z http://master.qt.io/development_releases/prebuilt/llvmpipe/windows/opengl32sw-64.7z --d3dcompiler7z http://master.qt.io/development_releases/prebuilt/d3dcompiler/msvc2013/d3dcompiler_47-x64.7z --openssl7z http://ci-files02-hki.intra.qt.io/packages/jenkins/openssl/openssl_1.1.1d_prebuild_x64.7z {{.Env.QTC_QT_MODULES}}"
|
||||
command: "python -u {{.AgentWorkingDir}}/build/qtsdk/packaging-tools/install_qt.py --qt-path {{.AgentWorkingDir}}/build/qt_install_dir --base-url {{.Env.QTC_QT_BASE_URL}} --base-url-postfix={{.Env.QTC_QT_POSTFIX}} --opengl32sw7z http://master.qt.io/development_releases/prebuilt/llvmpipe/windows/opengl32sw-64.7z --d3dcompiler7z http://master.qt.io/development_releases/prebuilt/d3dcompiler/msvc2013/d3dcompiler_47-x64.7z --openssl7z http://ci-files02-hki.intra.qt.io/packages/jenkins/openssl/openssl_1.1.1d_prebuild_x64.7z {{.Env.QTC_QT_MODULES}}"
|
||||
executeCommandArgumentSplitingBehavior: SplitAfterVariableSubstitution
|
||||
maxTimeInSeconds: 3600
|
||||
maxTimeBetweenOutput: 360
|
||||
|
||||
27
dist/changelog/changes-9.0.0.md
vendored
27
dist/changelog/changes-9.0.0.md
vendored
@@ -42,6 +42,7 @@ Editing
|
||||
* Fixed saving files with non-breaking spaces (QTCREATORBUG-17875)
|
||||
* Fixed `Rewrap Paragraph` for Doxygen comments (QTCREATORBUG-9739)
|
||||
* Fixed MIME type matching for generic highlighting with MIME type aliases
|
||||
* Fixed annotation painting when scrolling horizontally (QTCREATORBUG-28411)
|
||||
|
||||
### C++
|
||||
|
||||
@@ -55,6 +56,7 @@ Editing
|
||||
action (QTCREATORBUG-28099)
|
||||
* Fixed that selection was not considered for refactoring actions
|
||||
(QTCREATORBUG-27886)
|
||||
* Fixed generation of function definitions with `unsigned` (QTCREATORBUG-28378)
|
||||
* Fixed code style preview editor size (QTCREATORBUG-27267)
|
||||
* Clangd
|
||||
* Added option for using single Clangd instance for the whole session
|
||||
@@ -62,6 +64,7 @@ Editing
|
||||
* Added option for indexing priority (`--background-index-priority`)
|
||||
* Added option for maximum number of completion results (default 100)
|
||||
(QTCREATORBUG-27152)
|
||||
* Added `"`, `<` and `/` to auto-completion triggers (QTCREATORBUG-28203)
|
||||
* Added option for document specific preprocessor directives
|
||||
(QTCREATORBUG-20423)
|
||||
* Fixed semantic highlighting for `__func__`
|
||||
@@ -109,6 +112,7 @@ Projects
|
||||
directory to build directory
|
||||
* Fixed that local environment was used when inspecting GCC toolchain on remote
|
||||
* Fixed stopping terminal process (QTCREATORBUG-28365)
|
||||
* Fixed automatic popup of `Issues` (QTCREATORBUG-28330)
|
||||
|
||||
### CMake
|
||||
|
||||
@@ -116,7 +120,8 @@ Projects
|
||||
* Turned `Package manager auto setup` off by default
|
||||
* Added support for CMake configure and build presets, including conditions and
|
||||
toolchain files (QTCREATORBUG-24555)
|
||||
([CMake Documentation](https://cmake.org/cmake/help/v3.21/manual/cmake-presets.7.html))
|
||||
([Documentation](https://doc.qt.io/qtcreator/creator-build-settings-cmake.html#cmake-presets),
|
||||
[CMake Documentation](https://cmake.org/cmake/help/v3.21/manual/cmake-presets.7.html))
|
||||
* Added option for changing environment for configure step
|
||||
* Added option for hiding subfolders in source groups (QTCREATORBUG-27432)
|
||||
* Added support for `Build File` also from header files (QTCREATORBUG-26164)
|
||||
@@ -141,11 +146,17 @@ Projects
|
||||
Debugging
|
||||
---------
|
||||
|
||||
### C++
|
||||
|
||||
* Improved type name lookup performance for heavily templated code
|
||||
* Improved display performance for large array-like data (QTCREATORBUG-28111)
|
||||
* Added warning for missing QML debugging functionality for mobile and embedded
|
||||
devices
|
||||
* Fixed display of strings with characters more than 2 bytes long
|
||||
* Improved type name lookup performance for heavily templated code
|
||||
* Improved display performance for large array-like data (QTCREATORBUG-28111)
|
||||
|
||||
### QML
|
||||
|
||||
* Fixed interrupting
|
||||
|
||||
Analyzer
|
||||
--------
|
||||
@@ -155,9 +166,15 @@ Analyzer
|
||||
* Fixed error when analyzing non-desktop targets (QTCREATORBUG-25615)
|
||||
* Fixed wrong failure count display (QTCREATORBUG-27330)
|
||||
|
||||
### Perf
|
||||
|
||||
* Fixed wrong working directory (QTCREATORBUG-28462)
|
||||
|
||||
Version Control Systems
|
||||
-----------------------
|
||||
|
||||
* Fixed that `--password` argument was shown in plain text (QTCREATORBUG-28413)
|
||||
|
||||
### Git
|
||||
|
||||
* Added support for user-configured comment character (QTCREATORBUG-28042)
|
||||
@@ -171,7 +188,7 @@ Test Integration
|
||||
----------------
|
||||
|
||||
* Added support for Squish
|
||||
([Documentation](https://doc-snapshots.qt.io/qtcreator-9.0/creator-squish.html))
|
||||
([Documentation](https://doc.qt.io/qtcreator/creator-squish.html))
|
||||
* Catch 2
|
||||
* Fixed handling of exceptions (QTCREATORBUG-28131)
|
||||
* Fixed crash (QTCREATORBUG-28269)
|
||||
@@ -208,6 +225,7 @@ Platforms
|
||||
* Fixed emulator operations when the deprecated `SDK Tools` is installed in
|
||||
addition to `SDK Command-line Tools` (QTCREATORBUG-28196)
|
||||
* Fixed debugging over WiFi (QTCREATORBUG-28342)
|
||||
* Worked around QML debugging not being enabled by default with NDK 24 and 25
|
||||
|
||||
### iOS
|
||||
|
||||
@@ -223,6 +241,7 @@ Platforms
|
||||
### Boot to Qt
|
||||
|
||||
* Fixed that `rsync` was not available for deployment (QTCREATORBUG-24731)
|
||||
* Fixed default deployment method
|
||||
|
||||
### Docker
|
||||
|
||||
|
||||
BIN
doc/qtcreator/images/qtcreator-git-blame.webp
Normal file
BIN
doc/qtcreator/images/qtcreator-git-blame.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 16 KiB |
@@ -16,7 +16,7 @@
|
||||
|
||||
To develop for Android, you must have a tool chain for building applications
|
||||
for Android devices installed on the development PC. \QC can automatically
|
||||
dowload and install the tool chain and create a suitable build and run
|
||||
download and install the tool chain and create a suitable build and run
|
||||
\l{glossary-buildandrun-kit}{kit} that contains the tool chain and the Qt
|
||||
version for Android for the device's architecture.
|
||||
|
||||
|
||||
@@ -239,7 +239,7 @@
|
||||
To add OpenSSL libraries, select \uicontrol {Include prebuilt OpenSSL libraries}
|
||||
in the \uicontrol {Additional Libraries} group. This will add the OpenSSL
|
||||
include project defined in \l{Specifying Android Device Settings}{device settings}
|
||||
in \uicontrol {Android OpenSSL} group. This can be used for QMake and CMake
|
||||
in \uicontrol {Android OpenSSL} group. This can be used for qmake and CMake
|
||||
projects.
|
||||
|
||||
Otherwise, you can manually add the paths to the required \c libssl.so and
|
||||
@@ -248,7 +248,7 @@
|
||||
\section1 Editing Manifest Files
|
||||
|
||||
You can use the configuration options to specify all the settings you need
|
||||
for the \c androiddeployqt tool. You only need an Adroid manifest file
|
||||
for the \c androiddeployqt tool. You only need an Android manifest file
|
||||
to specify Android-specific settings, such as the application icon.
|
||||
However, the manifest file is needed when you want to publish the package
|
||||
in the Play Store.
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
\li In the \uicontrol Type field, select the interface type.
|
||||
|
||||
\li In the \uicontrol Speed field, enter the interface speed between
|
||||
120 and 8000 kiloherz (kHz).
|
||||
120 and 8000 kilohertz (kHz).
|
||||
|
||||
\li Select the \uicontrol {Disable cache} check box to disable the
|
||||
\EBlink flash cache.
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
breakpoint in the \uicontrol Breakpoints view.
|
||||
|
||||
At various times, attempts are made to implant pending breakpoints into
|
||||
the debugged process. Succesfull implantation might create one or more
|
||||
the debugged process. Successful implantation might create one or more
|
||||
implanted breakpoints, each associated with an actual address in
|
||||
the debugged breakpoint. The implantation might also move a breakpoint
|
||||
marker in the editor from an empty line to the next line for which the
|
||||
@@ -389,7 +389,7 @@
|
||||
to the most powerful feature of the debugger: comprehensive display of data
|
||||
belonging to Qt's basic objects. For example, in case of QObject, instead of
|
||||
displaying a pointer to some private data structure, you see a list of
|
||||
children, signals and slots.
|
||||
children, signals, and slots.
|
||||
|
||||
Similarly, instead of displaying many pointers and integers, \QC's debugger
|
||||
displays the contents of a QHash or QMap in an orderly manner. Also, the
|
||||
|
||||
@@ -169,7 +169,7 @@
|
||||
|
||||
The 32-bit CDB version can only debug 32-bit executables, whereas the 64-bit
|
||||
version can debug both 64-bit and 32-bit executables. However, interrupting a
|
||||
32-bit executable with a 64-bit debugger can result in a stacktrace of the
|
||||
32-bit executable with a 64-bit debugger can result in a stack trace of the
|
||||
WOW64 emulator 32-bit emulation layer being displayed.
|
||||
|
||||
\QC extends the command line debugger by loading the
|
||||
@@ -187,7 +187,7 @@
|
||||
|
||||
It is highly recommended that you add the Symbol Server provided
|
||||
by Microsoft to the symbol search path of the debugger. The
|
||||
Symbol Server provides you with debugging informaton for the
|
||||
Symbol Server provides you with debugging information for the
|
||||
operating system libraries for debugging Windows applications.
|
||||
For more information, see
|
||||
\l{Setting CDB Paths on Windows}.
|
||||
|
||||
@@ -417,7 +417,7 @@
|
||||
to manage the GDB process, see \l{Specifying GDB Settings} and
|
||||
\l{Specifying Extended GDB Settings}.
|
||||
|
||||
For more informaton about connecting with \c {target extended-remote} mode
|
||||
For more information about connecting with \c {target extended-remote} mode
|
||||
in GDB, see \l{https://sourceware.org/gdb/onlinedocs/gdb/Connecting.html}
|
||||
{Debugging with GDB: Connecting to a Remote Target}.
|
||||
|
||||
@@ -1107,12 +1107,14 @@
|
||||
|
||||
\image qtcreator-cdb-options.png "CDB preferences"
|
||||
|
||||
The following sections describe some of the widely-used Dumper classes and
|
||||
members specified in \c qtcreator\share\qtcreator\debugger\dumper.py.
|
||||
|
||||
|
||||
\section3 Dumper Class
|
||||
|
||||
The \c Dumper class contains generic bookkeeping, low-level, and convenience
|
||||
functions.
|
||||
|
||||
The member functions of the \c Dumper class are the following:
|
||||
functions:
|
||||
|
||||
\list
|
||||
\li \c{putItem(self, value)} - The \e {master function} that handles
|
||||
@@ -1134,9 +1136,10 @@
|
||||
self.putType("bool")
|
||||
\endcode
|
||||
|
||||
\li \c{putCallItem(self, name, value, func, *args)} - Uses the native
|
||||
debugger backend to place the function call \c func on the value
|
||||
specified by \a {value} and output the resulting item.
|
||||
\li \c{putCallItem(self, name, rettype, value, func, *args)} - Uses the
|
||||
native debugger backend to place the function call \c func returning
|
||||
\c rettype on the value specified by \a {value} and to output the
|
||||
resulting item.
|
||||
|
||||
Native calls are extremely powerful and can leverage existing
|
||||
debugging or logging facilities in the debugged process, for
|
||||
@@ -1289,7 +1292,7 @@
|
||||
classes, obliterating the need to use \e Debug builds of Qt for the purpose
|
||||
of object introspection.
|
||||
|
||||
The member functions of the \c{Dumper.Type} class are the following:
|
||||
The \c{Dumper.Type} class has the following widely-used member functions:
|
||||
|
||||
\list
|
||||
|
||||
@@ -1332,10 +1335,7 @@
|
||||
\section3 Dumper.Field Class
|
||||
|
||||
The \c{Dumper.Field} class describes a base class or a data member of a type
|
||||
object.
|
||||
|
||||
The member function and properties of the \c{Dumper.Field} class are the
|
||||
following:
|
||||
object:
|
||||
|
||||
\list
|
||||
|
||||
|
||||
@@ -67,8 +67,8 @@
|
||||
\li In the \uicontrol Background field, select the background
|
||||
color for the code element or message.
|
||||
|
||||
The backgound of the \uicontrol Text element determines the background of the
|
||||
code editor.
|
||||
The background of the \uicontrol Text element determines the background
|
||||
of the code editor.
|
||||
|
||||
\li In \uicontrol Font, select \uicontrol Bold or \uicontrol Italic to
|
||||
format the text of the selected code element or message by making it
|
||||
@@ -116,7 +116,7 @@
|
||||
|
||||
To resolve the issue, use a file conversion tool to convert the file
|
||||
encoding to UTF-8 when developing Qt 5 applications. Otherwise, conversion
|
||||
of string constants to QStrings might not work as expected.
|
||||
of string constants to QString might not work as expected.
|
||||
|
||||
If you develop only Qt 4 applications or other than Qt applications, you
|
||||
can set other encoding options as the default encoding. Select the
|
||||
|
||||
@@ -310,7 +310,7 @@
|
||||
|
||||
\section1 Quitting FakeVim Mode
|
||||
|
||||
To quit the FakeVim mode, unselect \uicontrol Edit > \uicontrol Preferences >
|
||||
To quit the FakeVim mode, deselect \uicontrol Edit > \uicontrol Preferences >
|
||||
\uicontrol FakeVim > \uicontrol {Use FakeVim} or press \key {Alt+V,Alt+V}.
|
||||
|
||||
You can temporarily escape FakeVim mode to access the normal \QC keyboard
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
file patterns to match language servers. If you do not set at least one MIME
|
||||
type or file pattern, no files will be sent to the language server. This is
|
||||
done to avoid unnecessary traffic and inaccurate information, as files are
|
||||
only sent to the languge server if they are known to be handled by it. For
|
||||
only sent to the language server if they are known to be handled by it. For
|
||||
more information about how \QC uses MIME types, see \l {Editing MIME Types}.
|
||||
|
||||
\section1 Specifying Settings for Language Clients
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
\QC searches for the value within a specified range in the files and takes
|
||||
the priority of the magic header into account. If you specify wide search
|
||||
ranges, openging files in \QC might take a long time. Therefore, you are
|
||||
ranges, opening files in \QC might take a long time. Therefore, you are
|
||||
advised to use the recommended values for the range and priority of the
|
||||
magic header.
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
\endlist
|
||||
|
||||
You can group elements by surrounding them with a boundary. When you move
|
||||
the boundary, all elements within it are moved together. Similary, drag
|
||||
the boundary, all elements within it are moved together. Similarly, drag
|
||||
a swimlane to the diagram. When you move the swimlane, all elements right
|
||||
to the swimlane (for vertical swimlanes) or below it (for horizontal swimlanes)
|
||||
will be moved together. A vertical swimlane is created when you drop the
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
\li For a Qt Quick test, select the
|
||||
\uicontrol {Generate setup code} check box to execute C++
|
||||
code before any of the QML tests are run. The testing
|
||||
framework will call slots and invokable functions, as
|
||||
framework will call slots and invocable functions, as
|
||||
described in \l{Executing C++ Before QML Tests}.
|
||||
|
||||
\image qtcreator-autotests-project-qtquick-test.png "Autotest project wizard - Qt Quick Test"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
\title Managing Sessions
|
||||
|
||||
When you exit \QC, a snapshot of your current workspace is stored as a
|
||||
When you exit \QC, it stores a snapshot of your current workspace as a
|
||||
\e session. To restore the session automatically when you start \QC,
|
||||
select \uicontrol File > \uicontrol Sessions > \uicontrol Manage >
|
||||
\uicontrol {Restore last session on startup}.
|
||||
@@ -79,8 +79,8 @@
|
||||
To switch between sessions, select \uicontrol {Open}.
|
||||
|
||||
\if defined(qtcreator)
|
||||
When you launch \QC, a list of existing sessions is displayed in the
|
||||
\uicontrol Welcome mode. To open a session, select it or press
|
||||
The \uicontrol Projects tab in the \uicontrol Welcome mode lists existing
|
||||
sessions. To open a session, select it or press
|
||||
\key Ctrl+Alt+<number>, where \e <number> is the number of the session to
|
||||
open (available for the first nine sessions).
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
to clone, rename, and delete sessions.
|
||||
|
||||
When you start \QC from the command line, you can give the name of
|
||||
a session as argument and \QC will start with this session.
|
||||
a session as an argument and \QC will start with this session.
|
||||
|
||||
For more information, see \l{Using Command Line Options}.
|
||||
\endif
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
is encountered. This is the default behavior in Visual Studio
|
||||
builds, but not for Make and Build tools or Dev Tools builds.
|
||||
\li \uicontrol {Additional Arguments} are concatenated to the final
|
||||
buildconsole command line.
|
||||
build console command line.
|
||||
\li \uicontrol {Open Build Monitor} opens an IncrediBuild Build Monitor
|
||||
that graphically displays the build's progress once the build
|
||||
starts.
|
||||
|
||||
@@ -36,12 +36,12 @@
|
||||
\QC is an integrated development environment (IDE) that you can use to
|
||||
develop Qt applications. While you can use the Qt Installer to install \QC,
|
||||
the stand-alone \QC installer never installs Qt or any Qt tools, such as
|
||||
qmake. To use \QC for Qt development, you also need to have a Qt version
|
||||
and a compiler installed. If you update the compiler version later, you
|
||||
qmake. To use \QC for Qt development, you also need to install a Qt version
|
||||
and a compiler. If you update the compiler version later, you
|
||||
can register it into \QC.
|
||||
|
||||
The Qt Installer attempts to auto-detect the installed compilers and Qt
|
||||
versions. If it succeeds, the relevant kits will automatically become
|
||||
The Qt Installer attempts to auto-detect compilers and Qt versions. If it
|
||||
succeeds, the relevant kits will automatically become
|
||||
available in \QC. If it does not, you must add the kits yourself to tell
|
||||
\QC where everything is.
|
||||
|
||||
@@ -51,18 +51,17 @@
|
||||
For more information, see \l{Adding Kits}.
|
||||
|
||||
Each kit consists of a set of values that define one environment, such as a
|
||||
\l{glossary-device}{device}, compiler, and Qt version. If you know you have
|
||||
installed a Qt version, but it is not listed in \uicontrol Edit >
|
||||
\uicontrol Preferences > \uicontrol Kits > \uicontrol {Qt Versions}, select
|
||||
\uicontrol {Link with Qt}.
|
||||
\l{glossary-device}{device}, compiler, and Qt version. If \uicontrol Edit >
|
||||
\uicontrol Preferences > \uicontrol Kits > \uicontrol {Qt Versions} does not
|
||||
show all the installed Qt versions, select \uicontrol {Link with Qt}.
|
||||
|
||||
If the Qt version is still not listed under \uicontrol Auto-detected, select
|
||||
If \uicontrol Auto-detected still does not show the Qt version, select
|
||||
\uicontrol {Add} to add it manually.
|
||||
|
||||
For more information, see \l{Adding Qt Versions}.
|
||||
|
||||
Also check that your compiler is listed in \uicontrol Edit >
|
||||
\uicontrol Preferences > \uicontrol Kits > \uicontrol {Compilers}.
|
||||
Also check that \uicontrol Edit > \uicontrol Preferences > \uicontrol Kits >
|
||||
\uicontrol {Compilers} shows your compiler.
|
||||
|
||||
For more information, see \l{Adding Compilers}.
|
||||
|
||||
@@ -95,8 +94,8 @@
|
||||
in the \uicontrol Theme field.
|
||||
|
||||
You can use the \QC text and code editors with your favorite color scheme
|
||||
that defines how code elements are highlighted and which background color is
|
||||
used. You can select one of the predefined color schemes or create custom
|
||||
that defines how to highlight code elements and which background color to
|
||||
use. You can select one of the predefined color schemes or create custom
|
||||
ones. The color schemes apply to highlighting C++ files, QML files, and
|
||||
generic files.
|
||||
|
||||
@@ -105,11 +104,10 @@
|
||||
|
||||
For more information, see \l{Defining Color Schemes}.
|
||||
|
||||
Generic highlighting is provided by
|
||||
\l{https://api.kde.org/frameworks/syntax-highlighting/html/index.html}
|
||||
{KSyntaxHighlighting}, which is the syntax highlighting engine for Kate
|
||||
syntax definitions. \QC comes with most of the commonly used syntax files,
|
||||
and you can download additional files.
|
||||
{KSyntaxHighlighting} provides generic highlighting. It is the syntax
|
||||
highlighting engine for Kate syntax definitions. \QC comes with most of
|
||||
the commonly used syntax files, and you can download additional files.
|
||||
|
||||
To download and use highlight definition files, select \uicontrol Edit >
|
||||
\uicontrol Preferences > \uicontrol {Text Editor} > \uicontrol {Generic Highlighter}.
|
||||
@@ -132,7 +130,7 @@
|
||||
|
||||
\QC supports several version control systems. In most cases, you do not need
|
||||
to configure the version control in any special way to make it work with
|
||||
\QC. Once it is set up correctly on the development PC, it should just work.
|
||||
\QC.
|
||||
|
||||
However, some configuration options are available and you can set them in
|
||||
\uicontrol Edit > \uicontrol Preferences > \uicontrol {Version Control} >
|
||||
@@ -147,9 +145,9 @@
|
||||
You can enable disabled plugins if you need them and disable plugins you
|
||||
don't need.
|
||||
|
||||
You can also install additional plugins that you downloaded from
|
||||
\l{https://marketplace.qt.io/}{Qt Marketplace} or some other source,
|
||||
such as \l{https://github.com/}{GitHub}.
|
||||
You can download and install additional plugins from
|
||||
\l{https://marketplace.qt.io/}{Qt Marketplace} or some
|
||||
other source, such as \l{https://github.com/}{GitHub}.
|
||||
|
||||
\section2 Enabling and Disabling Plugins
|
||||
|
||||
@@ -174,7 +172,7 @@
|
||||
browse the available plugins in the \uicontrol Marketplace tab in the
|
||||
Welcome mode.
|
||||
|
||||
\note You can install only plugins that are supported by your \QC version.
|
||||
\note You can install only plugins that your \QC version supports.
|
||||
|
||||
To install plugins:
|
||||
|
||||
|
||||
@@ -43,10 +43,11 @@
|
||||
\row
|
||||
\li \b {\l{Building and Running an Example}}
|
||||
|
||||
To check that \l{glossary-buildandrun-kit}{kits} for building and running were
|
||||
successfully installed as part of the \QSDK installation, open
|
||||
an example application and run it. If you have not done so
|
||||
before, go to \l{Building and Running an Example}.
|
||||
To check that the \l{https://www.qt.io/download-qt-installer}
|
||||
{Qt Online Installer} created \l{glossary-buildandrun-kit}
|
||||
{build and run kits}, open an example application and run it.
|
||||
If you have not done so before, go to
|
||||
\l{Building and Running an Example}.
|
||||
\li \b {\l{Tutorials}}
|
||||
|
||||
Now you are ready to start developing your own applications.
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
|
||||
\QC is an integrated development environment (IDE) that provides you with
|
||||
tools to design and develop applications with the Qt application framework.
|
||||
Qt is designed for developing applications and user interfaces once and
|
||||
deploying them to several desktop, embedded, and mobile operating systems or
|
||||
With Qt you can develop applications and user interfaces once and deploy
|
||||
them to several desktop, embedded, and mobile operating systems or
|
||||
web browsers (experimental). \QC
|
||||
provides you with tools for accomplishing your tasks throughout the whole
|
||||
application development life-cycle, from creating a project to deploying the
|
||||
@@ -32,20 +32,20 @@
|
||||
\li \b {\l{Managing Projects}}
|
||||
|
||||
To be able to build and run applications, \QC needs the same
|
||||
information as a compiler would need. This information is
|
||||
specified in the project settings.
|
||||
information as a compiler would need. It stores the information
|
||||
in the project settings.
|
||||
|
||||
Setting up a new project in \QC is aided by a wizard that guides
|
||||
you step-by-step through the project creation process, creates
|
||||
the necessary files, and specifies settings depending on the
|
||||
\QC contains templates for creating new projects. They guide
|
||||
you step-by-step through the project creation process, create
|
||||
the necessary files, and specify settings depending on the
|
||||
choices you make. For more information, see
|
||||
\l{Managing Projects}.
|
||||
\li \b {\l{Designing User Interfaces}}
|
||||
|
||||
To create intuitive, modern-looking, fluid user interfaces, you
|
||||
can use \l{Qt Quick} and \l{Qt Design Studio Manual}{\QDS}.
|
||||
If you need a traditional user interface that is clearly
|
||||
structured and enforces a platform look and feel, you can use
|
||||
If you need a traditional user interface that has a clear
|
||||
structure and enforces a platform look and feel, you can use
|
||||
the integrated \QD. For more information, see
|
||||
\l{Designing User Interfaces}.
|
||||
\li \b {\l{Coding}}
|
||||
@@ -66,33 +66,33 @@
|
||||
\row
|
||||
\li \b {\l{Building and Running}}
|
||||
|
||||
\QC is integrated with cross-platform systems for build
|
||||
\QC integrates cross-platform systems for build
|
||||
automation: qmake, Qbs, CMake, and Autotools. In addition, you
|
||||
can import
|
||||
projects as \e {generic projects} and fully control the steps
|
||||
and commands used to build the project.
|
||||
|
||||
\QC provides support for running and deploying Qt applications
|
||||
built for the desktop environment or a \l{glossary-device}
|
||||
{device}. \l{glossary-buildandrun-kit}{Kits}, build,
|
||||
run, and deployment settings allow you to quickly switch between
|
||||
different setups and target platforms.
|
||||
You can build applications for, deploy them to, and run them on
|
||||
the desktop environment or a \l{glossary-device}{device}.
|
||||
\l{glossary-buildandrun-kit}{Kits}, build, run, and deployment
|
||||
settings allow you to quickly switch between different setups and
|
||||
target platforms.
|
||||
|
||||
For more information, see \l{Building and Running}.
|
||||
\li \b {\l{Testing}}
|
||||
|
||||
\QC is integrated to several external native debuggers: GNU
|
||||
\QC integrates several external native debuggers: GNU
|
||||
Symbolic Debugger (GDB), Microsoft Console Debugger (CDB), and
|
||||
internal JavaScript debugger. In the \uicontrol Debug mode, you
|
||||
can inspect the state of your application while debugging.
|
||||
|
||||
The memory and CPU power available on devices are limited and
|
||||
Devices have limited memory and CPU power, so
|
||||
you should use them carefully. \QC integrates Valgrind code
|
||||
analysis tools for detecting memory leaks and profiling function
|
||||
execution. In addition, the QML Profiler enables you to profile
|
||||
Qt Quick applications.
|
||||
|
||||
\QC is integrated to the \l{Qt Test}, Boost.Test, Catch 2 test,
|
||||
\QC integrates the \l{Qt Test}, Boost.Test, Catch 2 test,
|
||||
and Google C++ Testing frameworks for unit testing applications
|
||||
and libraries. You can use \QC to create, build, and run
|
||||
autotests.
|
||||
@@ -100,8 +100,8 @@
|
||||
For more information, see \l{Testing}.
|
||||
\li \b {Publishing}
|
||||
|
||||
\QC allows you to create installation packages for mobile
|
||||
devices that are suitable for publishing to application stores
|
||||
\QC enables you to create installation packages for mobile
|
||||
devices that you can publish to application stores
|
||||
and other channels. You must make sure that the package contents
|
||||
meet the requirements for publishing on the channel.
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
\row
|
||||
\li {1,2} General
|
||||
\li Empty File
|
||||
\li Empty file that you can save with any filename extensio.
|
||||
\li Empty file that you can save with any filename extension.
|
||||
\row
|
||||
\li Scratch Buffer
|
||||
\li Scratch buffer that uses temporary files. You can
|
||||
|
||||
@@ -36,10 +36,10 @@
|
||||
|
||||
\image qtcreator-gs-build-example-open.png "Selecting an example"
|
||||
|
||||
If no examples are listed, check that a \l{Adding Qt Versions}
|
||||
{Qt version} (2) is installed and configured. If you select a Qt
|
||||
for Android or iOS, only the examples tested for Android or iOS
|
||||
are listed.
|
||||
If you cannot see any examples, check that the list of
|
||||
\l{Adding Qt Versions}{Qt versions} (2) is not empty. If
|
||||
you select a Qt for Android or iOS, you can only see the
|
||||
examples that run on Android or iOS.
|
||||
|
||||
\li Select an example in the list of examples.
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
the \uicontrol Boot2Qt tag (commercial only) in the search field
|
||||
(4) to list examples that you can run on Boot2Qt devices.
|
||||
|
||||
\li To check that the application code can be compiled and linked for a
|
||||
\li To check that you can compile and link the application code for a
|
||||
device, click the \uicontrol {Kit Selector} and select a
|
||||
\l{glossary-buildandrun-kit}{kit} for the
|
||||
device.
|
||||
@@ -55,7 +55,7 @@
|
||||
\image qtcreator-gs-build-example-kit-selector.png "Selecting a kit to build with"
|
||||
|
||||
If you installed \QC as part of a Qt installation, it should have
|
||||
automatically detected the installed kit. If no kits are available,
|
||||
automatically detected the installed kit. If you cannot see any kits,
|
||||
see \l{Adding Kits}.
|
||||
|
||||
\li Click \inlineimage icons/run_small.png
|
||||
@@ -64,15 +64,15 @@
|
||||
\li To see the compilation progress, press \key{Alt+4} to open
|
||||
\l {Compile Output}.
|
||||
|
||||
If build errors occur, check that a Qt version and
|
||||
\l{Adding Compilers}{compiler} are installed and
|
||||
configured and that the necessary kits are configured. If you are
|
||||
building for an \l{Connecting Android Devices}{Android device} or
|
||||
\l{Connecting iOS Devices}{iOS device}, check that the development
|
||||
environment has been set up correctly.
|
||||
If build errors occur, check that you have a Qt version, a
|
||||
\l{Adding Compilers}{compiler}, and the necessary kits installed. If
|
||||
you are building for an \l{Connecting Android Devices}{Android device}
|
||||
or \l{Connecting iOS Devices}{iOS device}, check that you set up the
|
||||
development environment correctly.
|
||||
|
||||
The \uicontrol Build progress bar on the toolbar turns green when the
|
||||
project is successfully built. The application opens on the device.
|
||||
The \uicontrol Build progress bar on the toolbar turns green when
|
||||
you build the project successfully. The application opens on the
|
||||
device.
|
||||
|
||||
\endlist
|
||||
|
||||
|
||||
@@ -12,27 +12,23 @@
|
||||
|
||||
\section1 Selecting the Build System
|
||||
|
||||
Most \QC project wizards enable you to choose the build system to use for
|
||||
building the project: qmake, CMake, or Qbs. If you are not presented with a
|
||||
choice, the project is set up to use qmake.
|
||||
You can use several build systems to build your projects.
|
||||
|
||||
\l{qmake Manual}{qmake} is a cross-platform system for build automation
|
||||
that helps simplify the build process for development projects across
|
||||
different platforms. qmake automates the generation of build configurations
|
||||
so that only a few lines of information are needed to create each
|
||||
configuration. qmake is installed and configured when you install Qt.
|
||||
so that you need only a few lines of information to create each
|
||||
configuration. Qt installers install and configure qmake.
|
||||
To use one of the other supported build systems, you need to set it up.
|
||||
|
||||
\l {Build with CMake}{CMake} is an alternative to qmake for automating the
|
||||
generation of build configurations. For more information, see
|
||||
\l {Setting Up CMake}.
|
||||
|
||||
\l {https://mesonbuild.com/}{Meson} Meson is an open source build system meant
|
||||
to be both extremely fast, and, even more importantly, as user friendly as
|
||||
possible. The main design point of Meson is that every second a developer
|
||||
spends writing or debugging build definitions is a second wasted. So is every
|
||||
second spent waiting for the build system to actually start compiling code.
|
||||
For more information, see \l {Setting Up Meson}.
|
||||
\l {https://mesonbuild.com/}{Meson} Meson is a fast and user-friendly
|
||||
open-source build system that aims to minimize the time developers spend
|
||||
writing or debugging build definitions and waiting for the build system
|
||||
to start compiling code. For more information, see \l {Setting Up Meson}.
|
||||
|
||||
\l{Qbs Manual}{Qbs} is an all-in-one build tool that generates a build graph
|
||||
from a high-level project description (like qmake or CMake do) and executes
|
||||
@@ -43,8 +39,8 @@
|
||||
for building and running projects, select \uicontrol Edit >
|
||||
\uicontrol Preferences > \uicontrol {Build & Run} > \uicontrol General.
|
||||
|
||||
To specify build and run settings for different target platforms,
|
||||
select \uicontrol Projects. For more information on the options you have,
|
||||
Specify build and run settings for different target platforms, in the
|
||||
\uicontrol Projects mode. For more information on the options you have,
|
||||
see \l{Specifying Build Settings}.
|
||||
|
||||
//! [build systems]
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
specifies the compiler and other necessary tools for building an application
|
||||
for and running it on a particular platform.
|
||||
|
||||
\QC automatically detects the compilers that are registered by your
|
||||
system or by the Qt Installer and lists them in \uicontrol Edit >
|
||||
\uicontrol Preferences > \uicontrol Kits > \uicontrol Compilers.
|
||||
\QC automatically detects the compilers that your system or the Qt Installer
|
||||
registers and lists them in \uicontrol Edit > \uicontrol Preferences >
|
||||
\uicontrol Kits > \uicontrol Compilers.
|
||||
|
||||
\image qtcreator-toolchains.png
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
compilers from the various KEIL development environments.
|
||||
Currently supported architectures are \c 8051 and \c ARM.
|
||||
|
||||
\li \l{http://sdcc.sourceforge.net}{SDCC} is a retargetable, optimizing
|
||||
\li \l{http://sdcc.sourceforge.net}{SDCC} is an optimizing
|
||||
C bare-metal compiler for various architectures.
|
||||
Currently supported architectures are \c 8051 and \c STM8.
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
The emscripten compiler is tool chain for compiling to
|
||||
\l{Building Applications for the Web}{WebAssembly}.
|
||||
|
||||
\section1 Redetecting Compilers
|
||||
\section1 Re-detecting Compilers
|
||||
|
||||
When \QC finds an x86_64 GCC compiler, it sets up an instance for the native
|
||||
x86_64 target. If you plan to create also 32-bit x86 binaries without using
|
||||
@@ -113,7 +113,7 @@
|
||||
|
||||
To enable Microsoft Visual C++ Compilers (MSVC) and clang-cl to find system
|
||||
headers, libraries, and the linker, \QC executes them inside a command
|
||||
prompt where the environment has been set up using \c {vcvarsall.bat}. For
|
||||
prompt where you set up the environment using \c {vcvarsall.bat}. For
|
||||
these compilers, you also specify the path to the script that sets up the
|
||||
command prompt in the \uicontrol Initialization field.
|
||||
|
||||
@@ -245,7 +245,7 @@
|
||||
|
||||
To keep working with the third-party tool chain, create a new shell link
|
||||
that adds the required paths (as Visual Studio and Qt do). The shell link
|
||||
must point to cmd.exe, as illustrated by the following example:
|
||||
must point to cmd.exe:
|
||||
|
||||
\c {C:\Windows\System32\cmd.exe /K C:\path_to\myenv.bat}
|
||||
|
||||
|
||||
@@ -28,15 +28,15 @@
|
||||
|
||||
\endlist
|
||||
|
||||
Setting up a new project in \QC is aided by a wizard that guides you
|
||||
step-by-step through the project creation process. The wizards prompt you
|
||||
to enter the settings needed for that particular type of project and create
|
||||
When you set up a new project in \QC, a wizard guides you step-by-step
|
||||
through the process. The wizard templates prompt you to enter the settings
|
||||
that you need for that particular type of project and create
|
||||
the necessary files for you. You can add your own custom wizards to
|
||||
standardize the way subprojects and classes are added to a project.
|
||||
standardize the way of adding subprojects and classes to a project.
|
||||
|
||||
Most \QC project wizards enable you to choose the build system to use for
|
||||
building the project: qmake, CMake, or Qbs. If you are not presented with a
|
||||
choice, the project is set up to use qmake.
|
||||
building the project: qmake, CMake, or Qbs. If you do not get to choose,
|
||||
the project uses qmake as the build system.
|
||||
|
||||
You can use wizards also to create plain C or C++ projects that use
|
||||
qmake, Qbs, or CMake, but do not use the Qt library.
|
||||
@@ -46,8 +46,8 @@
|
||||
to fully control the steps and commands used to build the project.
|
||||
|
||||
You can install tools for \l{glossary-device}{devices} as part of Qt distributions.
|
||||
The \l{glossary-buildandrun-kit}{kits} and build and run settings for the
|
||||
installed device types are set up automatically. However, you might need to
|
||||
The installers create \l{glossary-buildandrun-kit}{kits} and specify build
|
||||
and run settings for the installed device types. However, you might need to
|
||||
install and configure some additional software on the devices to be able to
|
||||
connect to them from the development PC.
|
||||
|
||||
@@ -129,8 +129,8 @@
|
||||
\row
|
||||
\li Qt Quick 2 Extension Plugin
|
||||
\li Creates a C++ plugin that makes it possible to offer extensions
|
||||
that can be loaded dynamically into Qt Quick 2 applications
|
||||
by using the QQmlEngine class.
|
||||
that the QQmlEngine class can load dynamically into Qt Quick 2
|
||||
applications.
|
||||
\row
|
||||
\li \QC Plugin
|
||||
\li Creates a \QC plugin.
|
||||
@@ -150,7 +150,7 @@
|
||||
Use this template only if you are prototyping. You cannot create
|
||||
a full application by using this template.
|
||||
|
||||
Qt Quick UI projects cannot be deployed to embedded or mobile
|
||||
You cannot deploy Qt Quick UI projects to embedded or mobile
|
||||
target platforms. For those platforms, create a Qt Quick
|
||||
application instead.
|
||||
\row
|
||||
@@ -163,8 +163,8 @@
|
||||
projects as a tree hierarchy.
|
||||
\row
|
||||
\li Empty qmake Project
|
||||
\li Creates an empty qmake project that is based on qmake but does
|
||||
not use any default classes.
|
||||
\li Creates an empty qmake project that uses qmake as the build
|
||||
system but does not use any default classes.
|
||||
\row
|
||||
\li Code Snippet
|
||||
\li Creates a qmake project from a code snippet. When working on
|
||||
@@ -192,9 +192,9 @@
|
||||
\li {1,3} Import Project
|
||||
\li Project from version control
|
||||
\li Imports a project from a supported version control system, such
|
||||
as Bazaar, CVS, Git, Mercurial, or Subversion. For
|
||||
more information on how version control systems are integrated
|
||||
in \QC, see \l{Using Version Control Systems}.
|
||||
as Bazaar, CVS, Git, Mercurial, or Subversion. For more
|
||||
information about how \QC integrates version control systems,
|
||||
see \l{Using Version Control Systems}.
|
||||
\row
|
||||
\li Import as qmake or CMake Project (Limited Functionality)
|
||||
\li Imports an existing project that does not use any of the
|
||||
@@ -241,8 +241,8 @@
|
||||
to \QC
|
||||
\endlist
|
||||
|
||||
\QC displays all files that are declared to be part of the project by the
|
||||
project files in the \l Projects view. The files are sorted into categories
|
||||
\QC displays all files that you declare to be part of the project by the
|
||||
project files in the \l Projects view. It sorts the files into categories
|
||||
by file type (.cpp, .h, .qrc, and so on). To display additional files, edit
|
||||
the project file. Alternatively, you can see all the files in a project
|
||||
directory in the \l {File System} view.
|
||||
@@ -307,7 +307,7 @@
|
||||
You can add CMakeLists.txt files to any project by using the
|
||||
\l{https://cmake.org/cmake/help/latest/command/add_subdirectory.html}
|
||||
{add_subdirectory} command. The files can define complete projects that
|
||||
are included into the top-level project or any other CMake commands.
|
||||
you include into the top-level project or any other CMake commands.
|
||||
|
||||
\section2 qmake Projects
|
||||
|
||||
@@ -348,10 +348,11 @@
|
||||
\section1 Binding Keyboard Shortcuts to Wizards
|
||||
|
||||
If you use a wizard regularly, you can bind a custom keyboard shortcut to
|
||||
it. Triggering this keyboard shortcut will directly open the wizard without
|
||||
the need to navigate to \uicontrol File > \uicontrol {New File} or \uicontrol {New Project}.
|
||||
it. Triggering this keyboard shortcut directly opens the wizard, so you do
|
||||
not need to navigate to \uicontrol File > \uicontrol {New File} or
|
||||
\uicontrol {New Project}.
|
||||
|
||||
Keyboard shortcuts for wizards can be set in \uicontrol Edit >
|
||||
Set keyboard shortcuts for wizards in \uicontrol Edit >
|
||||
\uicontrol Preferences > \uicontrol Environment > \uicontrol Keyboard >
|
||||
\uicontrol Wizard. All wizard actions start with \uicontrol Impl there.
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
You can use variables (\c {%\{<variableName>\}}) in strings in the JSON configuration
|
||||
file and in template source files.
|
||||
A set of variables is predefined by the wizards and their pages.
|
||||
You can introduce new variables as shortcuts to be used later by
|
||||
You can introduce new variables as shortcuts for later use by
|
||||
defining the variable key names and values in the \c options section in the
|
||||
\c {wizard.json} file.
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
JavaScript expression and converts the resulting JavaScript value to a string.
|
||||
In the JavaScript expression you can refer to variables defined by the wizard with
|
||||
\c {value('<variableName>')}. The returned JavaScript object has the type that the value
|
||||
of the variable has, which can be a string, list, dictionary or boolean.
|
||||
of the variable has, which can be a string, list, dictionary, or boolean.
|
||||
|
||||
In places where a boolean value is expected and a string is given,
|
||||
an empty string as well as the string \c {"false"} is treated as
|
||||
@@ -225,8 +225,8 @@
|
||||
\li The \c options section contains an array of objects with \e key
|
||||
and \e value attributes. You can define your own variables to
|
||||
use in the configuration and template source files, in addition
|
||||
to the predefined variables. For example, the following
|
||||
variables are used in the C++ class creation wizard:
|
||||
to the predefined variables. For example, the C++ class creation
|
||||
wizard uses the following variables:
|
||||
|
||||
\code
|
||||
"options":
|
||||
@@ -372,7 +372,7 @@
|
||||
may be empty.
|
||||
\endlist
|
||||
|
||||
The following information is only available when the wizard was triggered
|
||||
The following information is only available when users trigger the wizard
|
||||
via the context menu of a node in the \uicontrol Projects view:
|
||||
|
||||
\list
|
||||
@@ -471,7 +471,7 @@
|
||||
\endlist
|
||||
|
||||
\li \c preferredFeatures with a list in the same format as
|
||||
requiredFeatures. Any kit matching all features listed in
|
||||
\c requiredFeatures. Any kit matching all features listed in
|
||||
\c preferredFeatures (in addition to \c requiredFeatures) will be
|
||||
pre-selected on this page.
|
||||
\endlist
|
||||
@@ -524,7 +524,7 @@
|
||||
}
|
||||
\endcode
|
||||
|
||||
The page sets \c IsSubproject to an empty string if this is a toplevel
|
||||
The page sets \c IsSubproject to an empty string if this is a top-level
|
||||
project and to \c yes otherwise. It sets \c VersionControl to the ID of the
|
||||
version control system in use.
|
||||
|
||||
@@ -563,12 +563,12 @@
|
||||
settings:
|
||||
|
||||
\list
|
||||
\li \c skipIfEmpty will cause empty arguments to be silently
|
||||
removed from the command to be run if set to \c true.
|
||||
\li \c skipIfEmpty silently removes empty arguments from the
|
||||
command to run if you set it to \c true.
|
||||
Defaults to \c true.
|
||||
|
||||
\li \c directory with the working directory of the command to
|
||||
be run. This defaults to the value of \c baseDirectory.
|
||||
run. This defaults to the value of \c baseDirectory.
|
||||
|
||||
\li \c command with the command to be run.
|
||||
|
||||
@@ -605,8 +605,8 @@
|
||||
\li Text Edit
|
||||
\endlist
|
||||
|
||||
\note Only the the settings documented in the following sections are
|
||||
supported in wizards.
|
||||
\note Wizards support only the the settings documented in the following
|
||||
sections.
|
||||
|
||||
Specify the following settings for each widget:
|
||||
|
||||
@@ -621,7 +621,7 @@
|
||||
\li \c type specifies the type of the widget: \c CheckBox, \c ComboBox,
|
||||
\c Label, \c LineEdit, \c PathChooser, \c Spacer, and \c TextEdit.
|
||||
|
||||
\li \c trToolTip specifies a tool tip to show when hovering the field
|
||||
\li \c trToolTip specifies a tooltip to show when hovering the field
|
||||
with the mouse.
|
||||
|
||||
\li \c isComplete is evaluated for all fields to decide whether the
|
||||
@@ -629,8 +629,8 @@
|
||||
must have their \c isComplete evaluate to \c true for this to
|
||||
happen. This setting defaults to \c true.
|
||||
|
||||
\li \c trIncompleteMessage is shown when the field's \c isComplete was
|
||||
evaluated to \c false.
|
||||
\li \c trIncompleteMessage is shown when the field's \c isComplete
|
||||
evaluates to \c false.
|
||||
|
||||
\li \c persistenceKey makes the user choice persistent. The value is
|
||||
taken to be a settings key. If the user changes the default
|
||||
|
||||
@@ -29,17 +29,17 @@
|
||||
change the wizard id in the \c {wizard.json} file.
|
||||
|
||||
You can create a subdirectory for the templates in the settings directory.
|
||||
The standard wizards are organized into subdirectories by type, but you can
|
||||
\QC organizes the standard wizards into subdirectories by type, but you can
|
||||
add your wizard directory to any directory you like. The folder hierarchy
|
||||
does not affect the order in which the wizards are displayed.
|
||||
does not affect the order in which \QC displays wizards.
|
||||
|
||||
To share the wizard with other users, you can create an archive of the
|
||||
wizard directory and instruct the recipients to extract it into one of the
|
||||
directories \QC searches wizards from.
|
||||
|
||||
\QC displays the wizards that it finds in the \uicontrol {New Project}
|
||||
and \uicontrol {New File} dialogs. For each wizard, an icon (1), a
|
||||
display name (2), and a description (3) are displayed.
|
||||
and \uicontrol {New File} dialogs. For each wizard, it shows an icon (1), a
|
||||
display name (2), and a description (3).
|
||||
|
||||
\image qtcreator-custom-wizard.png
|
||||
|
||||
@@ -79,9 +79,9 @@
|
||||
|
||||
\section2 Mapping Actions to Keyboard Shortcuts
|
||||
|
||||
\QC has some actions that can improve the wizard development process. These
|
||||
are by default not bound to any keyboard shortcuts and can thus not be
|
||||
triggered. To enable them, assign keyboard shortcuts in \uicontrol Edit >
|
||||
\QC has some actions that can improve the wizard development process. They
|
||||
don't have keyboard shortcuts by default, so you cannot trigger them. To
|
||||
enable them, assign keyboard shortcuts in \uicontrol Edit >
|
||||
\uicontrol Preferences > \uicontrol Environment > \uicontrol Keyboard >
|
||||
\uicontrol Wizard.
|
||||
|
||||
@@ -112,8 +112,8 @@
|
||||
\section2 Verbose Output
|
||||
|
||||
For wizard development, we recommend that you start \QC with the
|
||||
\c {-customwizard-verbose} argument to receive confirmation that \QC was
|
||||
able to find and parse the \c {wizard.json} file. The verbose mode displays
|
||||
\c {-customwizard-verbose} argument to receive confirmation that \QC
|
||||
finds and parses the \c {wizard.json} file. The verbose mode displays
|
||||
information about syntax errors, which are the most typical errors you might
|
||||
run into while editing wizards.
|
||||
|
||||
@@ -126,11 +126,12 @@
|
||||
* Configuration found and parsed.
|
||||
\endcode
|
||||
|
||||
The output includes the name of the directory that was checked for a
|
||||
\c wizard.json file. If the file is not found, the message is not displayed.
|
||||
The output includes the name of the directory that \QC checks for a
|
||||
\c wizard.json file. If it does not find the file, it does not show
|
||||
the message.
|
||||
|
||||
If the file contains errors, such as an invalid icon path, the following
|
||||
types of messages are displayed:
|
||||
If the file contains errors, such as an invalid icon path, you receive the
|
||||
following types of messages:
|
||||
|
||||
\code
|
||||
Checking "/home/jsmith/.config/QtProject/qtcreator/templates/wizards/mywizard"
|
||||
|
||||
@@ -66,14 +66,14 @@
|
||||
devices in the \uicontrol ABIs field.
|
||||
|
||||
\li In the \uicontrol {Working directory} field, specify the working
|
||||
directory of the application process. If the application is run
|
||||
directory of the application process. If the application runs
|
||||
locally, the working directory defaults to the build directory. If
|
||||
the application is run remotely on a device, the value depends on
|
||||
the application runs remotely on a device, the value depends on
|
||||
the shell or the device. Usually, you can leave this field empty.
|
||||
|
||||
\endlist
|
||||
|
||||
To remove the selected manually added debugger, select \uicontrol Remove.
|
||||
The debugger is removed from the list when you select \uicontrol Apply.
|
||||
The debugger disappears from the list when you select \uicontrol Apply.
|
||||
Until then, you can cancel the deletion by clicking \uicontrol Restore.
|
||||
*/
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
\title Adding Libraries to Projects
|
||||
|
||||
In addition to Qt libraries, you can add other libraries to your projects.
|
||||
The way the library is added depends on the type and location of the
|
||||
The process depends on the type and location of the
|
||||
library. You can add a system library, your own library, or a 3rd party
|
||||
library. The library can be located either in the build tree of the
|
||||
current project or in another build tree.
|
||||
@@ -40,11 +40,11 @@
|
||||
(\l{CMake: target_link_libraries command}{target_link_libraries} when using
|
||||
CMake or \l PRE_TARGETDEPS when using qmake) in the project file.
|
||||
|
||||
Depending on the development platform, some options might be detected
|
||||
automatically. For example, on \macos, the library type (\uicontrol Library or
|
||||
\uicontrol Framework) is detected automatically and the option is hidden. However,
|
||||
if you develop on another platform than \macos and want to build your
|
||||
project for \macos, you must specify the library type.
|
||||
Depending on the development platform, \QC might detect some options
|
||||
automatically. For example, on \macos, it detects the library type
|
||||
(\uicontrol Library or \uicontrol Framework) automatically and hides the
|
||||
option. However, if you develop on another platform than \macos and want
|
||||
to build your project for \macos, you must specify the library type.
|
||||
|
||||
The default convention on Windows is that the debug and release versions
|
||||
of a library have the same name, but are placed in different subdirectories,
|
||||
|
||||
@@ -17,15 +17,15 @@
|
||||
|
||||
\QC stores information that it needs to build projects in a .user file. If
|
||||
\QC cannot find the file when you open an existing project, it prompts you
|
||||
to enter the information. If you created the project by using another \QC
|
||||
instance, \QC asks whether you want to use the old settings. The settings
|
||||
are specific to the development environment, and should not be copied from
|
||||
to enter the information. If you used another \QC instance to create the
|
||||
project, \QC asks whether you want to use the old settings. The settings
|
||||
are specific to the development environment, and you should not copy them from
|
||||
one environment to another. Therefore, we recommend that you select \uicontrol No
|
||||
and enter the information again in the \uicontrol {Configure Project} tab.
|
||||
|
||||
The \uicontrol {Configure Project} tab displays a list of \l{glossary-buildandrun-kit}{kits}
|
||||
for building and running projects, that are installed on the development PC and
|
||||
configured in \uicontrol Edit > \uicontrol Preferences > \uicontrol Kits.
|
||||
for building and running projects, that you install on the development PC and
|
||||
configure in \uicontrol Edit > \uicontrol Preferences > \uicontrol Kits.
|
||||
Select the kits that you want to build and run the project with.
|
||||
|
||||
\image qtcreator-open-project-kits.png "Configure Project tab"
|
||||
@@ -46,8 +46,8 @@
|
||||
and location for the directory that you can change.
|
||||
|
||||
If you have built the project before, \QC can use the existing build
|
||||
configuration to make the exact same build as found in the directory
|
||||
available to \QC. To import a build, specify a directory in the
|
||||
configuration to make the exact same build available to you. To import a
|
||||
build, specify a directory in the
|
||||
\uicontrol {Import Build From} section and select \uicontrol {Import}.
|
||||
|
||||
You can edit the build configuration later. For more information, see
|
||||
|
||||
@@ -44,9 +44,9 @@
|
||||
|
||||
\li \l{Managing Sessions}
|
||||
|
||||
Items such as open files, breakpoints, and evaluated expressions
|
||||
are stored in sessions. They are not considered to be part of
|
||||
the information shared across platforms.
|
||||
Sessions store items such as open files, breakpoints, and evaluated
|
||||
expressions, which you do not typically want to share across
|
||||
platforms.
|
||||
|
||||
\endlist
|
||||
|
||||
|
||||
@@ -14,25 +14,23 @@
|
||||
|
||||
\title Adding Qt Versions
|
||||
|
||||
\QC allows you to have multiple versions of Qt installed on your development
|
||||
PC and use different versions to build your projects. For example,
|
||||
\l{glossary-device}{device} manufacturers provide special Qt versions for
|
||||
developing applications for their devices.
|
||||
You can install multiple versions of Qt development PC and use them to build
|
||||
your projects. For example, \l{glossary-device}{device} manufacturers provide
|
||||
special Qt versions for developing applications for their devices.
|
||||
|
||||
\section1 Registering Installed Qt Versions
|
||||
|
||||
\QC automatically detects the Qt versions that are registered by your
|
||||
system or by the Qt Installer. To view detailed information for each Qt
|
||||
version, select it in the list and select \uicontrol Details in the
|
||||
\uicontrol {Qt version for} section.
|
||||
The \uicontrol {Qt Versions} tab lists the installed Qt versions. To view
|
||||
detailed information about each Qt version, select it in the list and select
|
||||
\uicontrol Details in the \uicontrol {Qt version for} section.
|
||||
|
||||
\image qtcreator-qt-versions.png "Qt Versions tab in Kit preferences"
|
||||
|
||||
To remove invalid Qt versions, select \uicontrol {Clean Up}.
|
||||
|
||||
You can link to a Qt that you installed using the Qt Maintenance Tool to
|
||||
automatically register the installed Qt versions. However, you cannot link
|
||||
to Qt versions that were installed by the system using some other package
|
||||
You can link to a Qt that the Qt Installer installed to
|
||||
automatically detect the installed Qt versions. However, you cannot link
|
||||
to a Qt that the system installed with some other package
|
||||
manager, such as your Linux distribution, brew on \macos, or Chocolatey on
|
||||
Windows, nor a self-built Qt. In those cases, select \uicontrol {Add} in
|
||||
the \uicontrol {Qt Versions} tab to add the Qt version manually, as
|
||||
@@ -56,8 +54,8 @@
|
||||
To remove the automatically detected Qt versions from the list, select
|
||||
\uicontrol {Remove Link}.
|
||||
|
||||
If a Qt version is still not listed in the \uicontrol {Qt Versions} tab
|
||||
under \uicontrol Auto-detected, you have to set it up manually, as described
|
||||
If the \uicontrol {Qt Versions} tab does not show a Qt version
|
||||
under \uicontrol Auto-detected, set it up manually, as described
|
||||
in the following section.
|
||||
|
||||
You specify the Qt version to use for each \l{glossary-buildandrun-kit}
|
||||
@@ -74,8 +72,7 @@
|
||||
\li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol Kits >
|
||||
\uicontrol {Qt Versions} > \uicontrol Add.
|
||||
|
||||
\li Select the qmake executable for the Qt version that you want to
|
||||
add.
|
||||
\li Select the qmake executable for the Qt version to add.
|
||||
|
||||
\li Select the Qt version to view and edit it.
|
||||
|
||||
@@ -85,7 +82,7 @@
|
||||
\li In the \uicontrol{qmake path} field, you can change the qmake
|
||||
location.
|
||||
|
||||
\li If the Qt version is for QNX, enter the path to your installed QNX SDK in the
|
||||
\li If the Qt version is for QNX, enter the path to the QNX SDK in the
|
||||
\uicontrol{QNX SDK} field.
|
||||
|
||||
\endlist
|
||||
@@ -110,7 +107,7 @@
|
||||
the Qt version to see more information about the issue and suggestions for
|
||||
fixing it.
|
||||
|
||||
To determine whether a particular Qt version is installed correctly, \QC
|
||||
To verify the installation of a particular Qt version, \QC
|
||||
calls \c {qmake -query} and checks that the directories referenced in the
|
||||
output exist. When \QC complains about the installation of a self-built Qt
|
||||
version, try running \c {make install} in the build directory to actually
|
||||
@@ -119,8 +116,10 @@
|
||||
the Qt version.
|
||||
|
||||
\section1 Minimum Requirements
|
||||
If your build of Qt is incomplete but you still want to use QMake as build
|
||||
system, you need to ensure the following minimum requirements to be able to use that setup with \QC.
|
||||
If your build of Qt is incomplete but you still want to use qmake as build
|
||||
system, you need to ensure the following minimum requirements to use that
|
||||
setup with \QC.
|
||||
|
||||
\list 1
|
||||
\li qmake is an executable that understands the \c -query command line
|
||||
argument.
|
||||
@@ -130,7 +129,7 @@
|
||||
files.
|
||||
\endlist
|
||||
|
||||
If your Qt version has no \c libQtCore.so, \QC is unable to detect the ABI.
|
||||
If your Qt version has no \c libQtCore.so, \QC cannot detect the ABI.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
@@ -15,32 +15,27 @@
|
||||
\title Configuring Projects
|
||||
|
||||
When you install Qt for a target platform, such as Android or QNX, the
|
||||
build and run settings for the development targets might be set up
|
||||
automatically in \QC.
|
||||
|
||||
When you open a project for the first time, the
|
||||
\uicontrol {Configure Projects} view is displayed to let you select a set of
|
||||
\l{glossary-buildandrun-kit}{kits} that you want to use to build and run
|
||||
your project. At least one kit must be active for you to be able to build
|
||||
and run the project. For more information about selecting the initial kit,
|
||||
see \l{Opening Projects}.
|
||||
\l{https://www.qt.io/download-qt-installer}{Qt Online Installer}
|
||||
creates \l{glossary-buildandrun-kit}{kits} for the development
|
||||
targets. Select the kits to use in the \uicontrol {Configure Projects}
|
||||
view when you open a project for the first time. At least one kit must be
|
||||
active. For more information about selecting the initial kit, see
|
||||
\l{Opening Projects}.
|
||||
|
||||
To maintain the list of active kits for a currently open project, switch to
|
||||
the \uicontrol Projects mode by pressing \key Ctrl+5.
|
||||
|
||||
\section1 Activating Kits for a Project
|
||||
|
||||
All kits compatible with your project are listed in the
|
||||
\uicontrol {Build & Run} section of the sidebar. To activate one or more
|
||||
disabled kits, click them.
|
||||
The \uicontrol {Build & Run} section of the sidebar lists the kits that are
|
||||
compatible with your project. To activate one or more kits, click them.
|
||||
|
||||
\image qtcreator-project-kits.png
|
||||
|
||||
The list displays kits that are configured in \uicontrol Edit >
|
||||
\uicontrol Preferences > \uicontrol Kits. If the kit configuration is not
|
||||
suitable for the project type, warning and error icons are displayed.
|
||||
To view the warning and error messages, move the mouse pointer over
|
||||
the kit name.
|
||||
The list displays kits from \uicontrol Edit > \uicontrol Preferences >
|
||||
\uicontrol Kits. Warning and error icons indicate that the kit configuration
|
||||
is not suitable for the project type. To view the warning and error messages,
|
||||
move the mouse pointer over the kit name.
|
||||
|
||||
In the list of kits, you may see entries described as \e {Replacement for
|
||||
<kit-name>}. \QC generates them to save your project-specific settings,
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
application with root user permissions.
|
||||
|
||||
You can also create custom executable run configurations where you
|
||||
can set the executable to be run. For more information, see
|
||||
can set the executable to run. For more information, see
|
||||
\l{Specifying a Custom Executable to Run}.
|
||||
|
||||
//! [run settings desktop]
|
||||
|
||||
@@ -152,18 +152,17 @@
|
||||
\row
|
||||
\li \uicontrol {Qt version}
|
||||
\li Qt version to use for building the project. You can add Qt versions
|
||||
to the list if they are installed on the development PC, but were not
|
||||
detected automatically. For more information, see \l{Adding Qt Versions}.
|
||||
that \QC did not detect automatically. For more information, see
|
||||
\l{Adding Qt Versions}.
|
||||
|
||||
\QC checks the directories listed in the \c{PATH} environment
|
||||
variable for the qmake executable. If a qmake executable is found,
|
||||
it is referred to as \b{Qt in PATH} and selected as the Qt
|
||||
version to use for the \uicontrol Desktop kit that is created by default.
|
||||
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.
|
||||
\row
|
||||
\li \uicontrol {Qt mkspec}
|
||||
\li Name of the mkspec configuration that should be used by qmake. If
|
||||
you leave this field empty, the default mkspec of the selected Qt
|
||||
version is used.
|
||||
\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 Select \uicontrol Change to add settings to Qbs build profiles.
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
and \l {Qt Widgets}.
|
||||
|
||||
If you have not installed PySide6, \QC prompts you to install it after
|
||||
the project is created. Further, it prompts you to install the
|
||||
you create the project. Further, it prompts you to install the
|
||||
\l {Python Language Server}{Python language server} that provides services
|
||||
such as code completion and annotations. Select \uicontrol Install to install
|
||||
PySide6 and the language server.
|
||||
@@ -23,12 +23,12 @@
|
||||
\image qtcreator-python-interpreters.png "Python Interpreters in Preferences"
|
||||
|
||||
You can add and remove interpreters and clean up references to interpreters
|
||||
that have been uninstalled, but still appear in the list. In addition, you
|
||||
that you uninstalled, but that still appear in the list. In addition, you
|
||||
can set the interpreter to use by default.
|
||||
|
||||
The Qt for Python Application wizards generate a \c {.pyproject} file that
|
||||
lists the files in the Python project and a \c {.py} file that contains
|
||||
some boilerplate code. In addition, the widget based UI wizard creates a
|
||||
some boilerplate code. In addition, the widget-based UI wizard creates a
|
||||
\c {.ui} file that contains a \QD form, and the Qt Quick Application wizard
|
||||
creates a \c {.qml} file that contains Qt Quick controls.
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
self.ui.setupUi(self)
|
||||
\endcode
|
||||
|
||||
\note UI elements of the new class can be accessed as member variables.
|
||||
\note You can access the UI elements of the new class as member variables.
|
||||
For example, if you have a button called \e{button1}, you
|
||||
can interact with it using \c{self.ui.button1}.
|
||||
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
|
||||
\section1 Running the Application
|
||||
|
||||
The application is complete and ready to be deployed to a device:
|
||||
You can now deploy the application to a device:
|
||||
|
||||
\list 1
|
||||
|
||||
@@ -199,8 +199,8 @@
|
||||
\li Connect the device to the development PC.
|
||||
|
||||
If you are using a device running Android v4.2.2, it should prompt you to
|
||||
verify the connection to allow USB debugging from the PC it is connected
|
||||
to. To avoid such prompts every time you connect the device, select the
|
||||
verify the connection to allow USB debugging from the PC. To avoid such
|
||||
prompts every time you connect the device, select the
|
||||
\uicontrol {Always allow from this computer} check box, and then select
|
||||
\uicontrol OK.
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
|
||||
\section1 Creating Custom QML Types
|
||||
|
||||
Because the \l Window QML type requires states to be added into child
|
||||
Because the \l Window QML type requires that you add states into child
|
||||
components, we use the wizard to create a custom QML type called
|
||||
\e Page that we will refer to from \e main.qml.
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
To make the image move between the rectangles when users click them, we add
|
||||
states to the Page component, where we change the values of the \c x and
|
||||
\c y properties of \e icon to match those of the middle right and top left
|
||||
rectangles. To make sure that the image is displayed within the rectangle
|
||||
rectangles. To make sure that the image stays within the rectangle
|
||||
when the view is scaled on different sizes of screens, we \e bind the values
|
||||
of the \c x and \c y properties of \e icon to those of the rectangles:
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
applications for mobile devices, select kits also for Android and
|
||||
iOS.
|
||||
|
||||
\note Kits are listed if they have been specified in \uicontrol Edit
|
||||
\note The list shows kits that you specify in \uicontrol Edit
|
||||
> \uicontrol Preferences > \uicontrol Kits (on Windows and Linux)
|
||||
or in \uicontrol {\QC} > \uicontrol Preferences >
|
||||
\uicontrol Kits (on \macos).
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
\uicontrol Preferences > \uicontrol {Build & Run} > \uicontrol General.
|
||||
|
||||
The file that is currently active in the editor determines which folder
|
||||
is displayed in the \uicontrol {File System} view:
|
||||
to display in the \uicontrol {File System} view:
|
||||
|
||||
\list
|
||||
\li \uicontrol Projects if the file is located in a subdirectory of the
|
||||
@@ -38,11 +38,11 @@
|
||||
\endlist
|
||||
|
||||
To stop the synchronization between the editor and the
|
||||
\uicontrol {File System} view, delesect the \inlineimage icons/linkicon.png
|
||||
\uicontrol {File System} view, deselect the \inlineimage icons/linkicon.png
|
||||
(\uicontrol {Synchronize Root Directory with Editor}) button.
|
||||
|
||||
The path to the active file is displayed as bread crumbs. You can move to
|
||||
any directory along the path by clicking it.
|
||||
The view displays the path to the active file as bread crumbs. You can move
|
||||
to any directory along the path by clicking it.
|
||||
|
||||
\section1 File System Context Menu
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
\uicontrol {File System} view is displayed in the \l{Working with Sidebars}
|
||||
{sidebar}. It has a toolbar with additional options.
|
||||
|
||||
\image qtcreator-filesystem-view.png "File System view in the sidebar"
|
||||
\image qtcreator-filesystem-view.webp "File System view in the sidebar"
|
||||
\else
|
||||
The toolbar in the \uicontrol {File System} view contains additional
|
||||
options.
|
||||
@@ -94,13 +94,13 @@
|
||||
\list
|
||||
\li To hide the bread crumbs, deselect the
|
||||
\uicontrol {Show Bread Crumbs} check box.
|
||||
\li By default, folders are separated from files and listed first in
|
||||
the view. To list all items in alphabetic order, deselect the
|
||||
\li By default, the view separates folders from files and lists them
|
||||
first. To list all items in alphabetic order, deselect the
|
||||
\uicontrol {Show Folders on Top} check box.
|
||||
\li To also show hidden files, select \uicontrol {Show Hidden Files}.
|
||||
\endlist
|
||||
|
||||
To stop the synchronization with the file currently opened in the
|
||||
To stop the synchronization with the file currently open in the
|
||||
editor, deselect \inlineimage icons/linkicon.png
|
||||
(\uicontrol {Synchronize with Editor}).
|
||||
*/
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
You can use the context menu to apply some of the functions also available
|
||||
in the \uicontrol File menu and in the \l {File System Context Menu}
|
||||
{File System} view to the file that is selected in the view.
|
||||
{File System} view to the file that you select in the view.
|
||||
|
||||
In addition, you can:
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
\li Copy the full path of the file or just the filename to the
|
||||
clipboard.
|
||||
\li Pin files to ensure they stay at the top of the list and are not
|
||||
closed when \uicontrol {Close All} is used.
|
||||
closed when you select \uicontrol {Close All}.
|
||||
\endlist
|
||||
|
||||
\section1 Specifying Settings for Opening Files
|
||||
|
||||
@@ -50,8 +50,8 @@
|
||||
\section1 Projects View Context Menu
|
||||
|
||||
The \uicontrol Projects view contains context menus for managing projects,
|
||||
subprojects, folders, and files. The following functions are available for
|
||||
managing projects and subprojects:
|
||||
subprojects, folders, and files. Use the following functions to manage
|
||||
projects and subprojects:
|
||||
|
||||
\list
|
||||
\li Set a project as the active project.
|
||||
@@ -77,28 +77,28 @@
|
||||
\li Open a terminal window in the project directory. To specify the
|
||||
terminal to use on Linux and \macos, select \uicontrol Edit >
|
||||
\uicontrol Preferences > \uicontrol Environment > \uicontrol System.
|
||||
\li Open a terminal window in the project directory that is configured
|
||||
\li Open a terminal window in the project directory that you configured
|
||||
for building or running the project.
|
||||
\li Expand or collapse the tree view to show or hide all files and
|
||||
folders.
|
||||
\li Close all files in a project.
|
||||
\li Close the selected project or all projects except the selected
|
||||
one. By default, all files in the projects are also
|
||||
closed. To keep them open, deselect the \uicontrol Edit >
|
||||
one. By default, this closes all files in the projects. To keep
|
||||
them open, deselect the \uicontrol Edit >
|
||||
\uicontrol Preferences > \uicontrol {Build & Run} > \uicontrol General
|
||||
> \uicontrol {Close source files along with project} check box.
|
||||
\endlist
|
||||
|
||||
For managing files and directories, the same functions are available as in
|
||||
For managing files and directories, use the same functions as in
|
||||
the \l {File System} view. To view a project in it, select
|
||||
\uicontrol {Show in File System View}.
|
||||
|
||||
\section1 Projects View Toolbar
|
||||
|
||||
\if defined(qtdesignstudio)
|
||||
In the \uicontrol Edit and \uicontrol Debug mode, the \uicontrol Projects
|
||||
view is displayed in the \l{Working with Sidebars}{sidebar}. It has a
|
||||
toolbar with additional options.
|
||||
In the \uicontrol Edit and \uicontrol Debug mode, the
|
||||
\l{Working with Sidebars}{sidebar} contains the \uicontrol Projects
|
||||
view. It has a toolbar with additional options.
|
||||
|
||||
\image qtcreator-projects-view-edit.png "Projects view in the sidebar"
|
||||
\else
|
||||
@@ -112,10 +112,10 @@
|
||||
\list
|
||||
\li \uicontrol {Simplify Tree} hides the categories and sorts project
|
||||
files alphabetically.
|
||||
\li \uicontrol {Hide Generated Files} hides the source files that are
|
||||
automatically generated by the build system.
|
||||
\li \uicontrol {Hide Disabled Files} hides the source files that are
|
||||
not enabled for the current target,
|
||||
\li \uicontrol {Hide Generated Files} hides the source files that the
|
||||
build system automatically generates.
|
||||
\li \uicontrol {Hide Disabled Files} hides the source files that you
|
||||
have not enabled for the current target,
|
||||
\li \uicontrol {Hide Empty Directories} hides directories that do not
|
||||
contain any files.
|
||||
\li \uicontrol {Show Source and Header Groups} shows source and header
|
||||
@@ -130,18 +130,17 @@
|
||||
\if defined(qtcreator)
|
||||
Some build systems support adding and removing files to a project in \QC
|
||||
(currently qmake and Qbs). The faithful display of the project structure
|
||||
allows to specify exactly where a new file should be placed in the build
|
||||
system.
|
||||
enables you to specify exactly where to place a new file in the build system.
|
||||
|
||||
If you cannot see some files, they might not be declared as part of the
|
||||
If you cannot see some files, you might have to declare them as part of the
|
||||
project. For more information, see \l{Specifying Project Contents}.
|
||||
|
||||
If the project is under version control, information from the version
|
||||
control system might be displayed in brackets after the project name.
|
||||
This is currently implemented for Git (the branch name or a tag is
|
||||
displayed) and ClearCase (the view name is displayed).
|
||||
If the project is under version control, you might see information
|
||||
from the version control system in brackets after the project name.
|
||||
\QC currently implements this for Git (the view displays the branch name
|
||||
or a tag) and ClearCase (the view displays the branch name).
|
||||
\else
|
||||
If the project is under Git version control, the currently checked out
|
||||
branch or tag is displayed in brackets after the project name.
|
||||
If the project is under Git version control, you can see the currently
|
||||
checked out branch or tag in brackets after the project name.
|
||||
\endif
|
||||
*/
|
||||
|
||||
@@ -50,17 +50,14 @@
|
||||
\endif
|
||||
|
||||
\if defined(qtcreator)
|
||||
You can use the \l{Selecting Modes}{mode selector} (1) to change to another
|
||||
\QC mode.
|
||||
Use the \l{Selecting Modes}{mode selector} (1) to change to another \QC mode.
|
||||
|
||||
You can use the kit selector (2) to select the
|
||||
\l{glossary-buildandrun-kit}{kit} for running (3), debugging (4), or
|
||||
building (5) the application. Output from these actions is displayed on
|
||||
the task bar (7).
|
||||
Use the kit selector (2) to select the \l{glossary-buildandrun-kit}{kit} for
|
||||
running (3), debugging (4), or building (5) the application. The task bar (7)
|
||||
displays output from these actions.
|
||||
|
||||
You can use the \l{Searching with the Locator}{locator} (6) to browse
|
||||
through projects, files, classes, functions, documentation, and file
|
||||
systems.
|
||||
Use the \l{Searching with the Locator}{locator} (6) to browse through
|
||||
projects, files, classes, functions, documentation, and file systems.
|
||||
|
||||
For a quick tour of the user interface that takes you to the locations of
|
||||
these controls, select \uicontrol Help > \uicontrol {UI Tour}.
|
||||
@@ -147,8 +144,8 @@
|
||||
|
||||
\section1 Changing Languages
|
||||
|
||||
\QC has been localized into several languages. If the system language
|
||||
is one of the supported languages, it is automatically selected. To
|
||||
\QC has several language versions. If the system language
|
||||
is one of the supported languages, \QC selects it automatically. To
|
||||
change the language, select \uicontrol Edit > \uicontrol Preferences >
|
||||
\uicontrol Environment and select a language in the \uicontrol Language
|
||||
field. Select \uicontrol {Restart Now} to restart \QC and have the change
|
||||
@@ -156,16 +153,16 @@
|
||||
|
||||
\section1 High DPI Scaling
|
||||
|
||||
The operating systems supported by \QC implement high dots-per-inch (DPI)
|
||||
The operating systems that \QC supports implement high dots-per-inch (DPI)
|
||||
scaling at varying levels. Therefore, \QC handles high DPI scaling
|
||||
differently on different operating systems:
|
||||
|
||||
\list
|
||||
\li On \macos, high DPI scaling is forced, which means that \QC allows
|
||||
\li On \macos, \QC forces high DPI scaling, which means that it allows
|
||||
Qt to use the system scaling factor as the \QC scaling factor.
|
||||
\li On Windows, if no \l{High DPI}{scaling environment variables} are
|
||||
set, \QC instructs Qt to detect the scaling factor and use it for
|
||||
\QC.
|
||||
\li On Windows, if you do not set \l{High DPI}
|
||||
{scaling environment variables}, \QC instructs Qt to detect the
|
||||
scaling factor and use it as the \QC scaling factor.
|
||||
\li On Linux, \QC leaves it to the user to enable high DPI scaling
|
||||
because the process varies so much on different distributions
|
||||
and windowing systems that it cannot be reliably done automatically.
|
||||
@@ -257,14 +254,14 @@
|
||||
|
||||
\list
|
||||
|
||||
\li On Linux and other Unix platforms, the files are located in
|
||||
\li On Linux and other Unix platforms, look in
|
||||
\c {~/.config/QtProject} and
|
||||
\c {~/.local/share/data/QtProject/qtcreator}.
|
||||
|
||||
\li On \macos, the files are located in \c {~/.config/QtProject} and
|
||||
\li On \macos, look in \c {~/.config/QtProject} and
|
||||
\c {~/Library/Application Support/QtProject/Qt Creator}.
|
||||
|
||||
\li On Windows, the files are located in
|
||||
\li On Windows, look in
|
||||
\c {%appdata%\QtProject} and \c {%localappdata%\QtProject}.
|
||||
|
||||
\endlist
|
||||
@@ -288,8 +285,8 @@
|
||||
|
||||
\if defined(qtcreator)
|
||||
The mode selector allows you to quickly switch between tasks such as editing
|
||||
project and source files, designing application UIs, configuring how
|
||||
projects are built and executed, and debugging your applications. To change
|
||||
project and source files, designing application UIs, configuring projects for
|
||||
building and running, and debugging your applications. To change
|
||||
modes, click the icons, or use the \l{keyboard-shortcuts}
|
||||
{corresponding keyboard shortcut}.
|
||||
|
||||
@@ -533,7 +530,7 @@
|
||||
To jump from one issue to the next or previous one, press \key F6 and
|
||||
\key Shift+F6.
|
||||
|
||||
By default, the \uicontrol Issues view is cleared on a new build. To keep
|
||||
By default, a new build clears the \uicontrol Issues view. To keep
|
||||
the issues from the previous build rounds, deselect \uicontrol Edit >
|
||||
\uicontrol Preferences > \uicontrol {Build & Run} > \uicontrol General >
|
||||
\uicontrol {Clear issues list on new build}.
|
||||
@@ -545,8 +542,8 @@
|
||||
|
||||
\image qtcreator-search-results.png "Search Results"
|
||||
|
||||
The search results are stored in the search history (1) from which you can
|
||||
select earlier searches.
|
||||
The search history (1) stores the search results. You can select earlier
|
||||
searches from the history.
|
||||
|
||||
The figure below shows an example search result for all
|
||||
occurrences of the search string in the specified directory.
|
||||
@@ -559,7 +556,7 @@
|
||||
\section1 Application Output
|
||||
|
||||
\uicontrol{Application Output} displays the status of a program when
|
||||
it is executed, and the debug output.
|
||||
you execute it, and the debug output.
|
||||
|
||||
\image qtcreator-application-output.png
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
{mode} you are working in. Only views that are relevant to a mode are
|
||||
available in it.
|
||||
|
||||
The following views are related to managing projects and files:
|
||||
Manage projects and files in the following views:
|
||||
|
||||
\list
|
||||
\li \l Projects shows a list of projects open in the current
|
||||
@@ -33,7 +33,7 @@
|
||||
\li \l{Using Bookmarks}{Bookmarks} shows all bookmarks for the current
|
||||
session.
|
||||
\li \l{Working with Branches}{Git Branches} shows the local and remote
|
||||
brances for the project in the Git version control system.
|
||||
branches for the project in the Git version control system.
|
||||
\li \l{Viewing Defined Types and Symbols}{Outline} shows an overview of
|
||||
defined types and other symbols, as well as their properties and
|
||||
hierarchy in a source file.
|
||||
@@ -49,8 +49,8 @@
|
||||
tests in the project.
|
||||
\li \l{Viewing Type Hierarchy}{Type Hierarchy} shows the base
|
||||
classes of a class.
|
||||
\li \l{Viewing Include Hierarchy}{Include Hierarchy} shows which
|
||||
files are included in the current file and which files include
|
||||
\li \l{Viewing Include Hierarchy}{Include Hierarchy} shows the
|
||||
files that the current file includes and those that include
|
||||
the current file.
|
||||
\endlist
|
||||
\else
|
||||
@@ -58,8 +58,7 @@
|
||||
files in the \uicontrol Design mode, see \l{Design Views}.
|
||||
\endif
|
||||
|
||||
The additional options in a particular view are described in the following
|
||||
sections.
|
||||
The following sections describe the additional options in a particular view.
|
||||
|
||||
In some views, right-clicking opens a context menu that contains functions
|
||||
for managing the objects listed in the view.
|
||||
@@ -109,21 +108,21 @@
|
||||
|
||||
To navigate in the type hierarchy, double-click a class or select it,
|
||||
and then select \uicontrol {Open Type Hierarchy} in the context menu.
|
||||
The previous class is highlighted in the view.
|
||||
The view highlights the previous class.
|
||||
|
||||
The definition of the selected class is opened in the code editor. You
|
||||
The definition of the selected class opens in the code editor. You
|
||||
can also select \uicontrol {Open in Editor} in the context menu to open
|
||||
it.
|
||||
|
||||
\section1 Viewing Include Hierarchy
|
||||
|
||||
To view which files are included in the current file and which files include
|
||||
To view the files that the current file includes and those that include
|
||||
the current file, right-click in the editor and select
|
||||
\uicontrol {Open Include Hierarchy} or press \key {Ctrl+Shift+I}.
|
||||
|
||||
\image qtcreator-include-hierarchy-view.png "Include Hierarchy view"
|
||||
|
||||
To keep the view synchronized with the file currently opened in the editor,
|
||||
To keep the view synchronized with the file currently open in the editor,
|
||||
select \inlineimage icons/linkicon.png
|
||||
(\uicontrol {Synchronize with Editor}).
|
||||
*/
|
||||
|
||||
@@ -17,10 +17,15 @@
|
||||
Perforce is a fast software configuration management system developed by
|
||||
Perforce Software.
|
||||
|
||||
Since \QC 4.9, the Perforce plugin is disabled by default. To enable
|
||||
it, select \uicontrol Help > \uicontrol {About Plugins} >
|
||||
\uicontrol {Version Control} > \uicontrol Perforce. Then select
|
||||
\uicontrol {Restart Now} to restart \QC and load the plugin.
|
||||
\section1 Enabling the Perforce Plugin
|
||||
|
||||
To enable the Perforce plugin:
|
||||
|
||||
\list 1
|
||||
\li Select \uicontrol Help > \uicontrol {About Plugins} >
|
||||
\uicontrol {Version Control} > \uicontrol Perforce.
|
||||
\li Select \uicontrol {Restart Now} to restart \QC and load the plugin.
|
||||
\endlist
|
||||
|
||||
\section1 Configuring Perforce
|
||||
|
||||
@@ -29,8 +34,8 @@
|
||||
specify the details individually for several projects, use configuration
|
||||
files instead. Create a \c {p4config.txt} configuration file for each
|
||||
project in the top level project directory, and run
|
||||
\c{p4 set P4CONFIG=p4config.txt} once. Note that
|
||||
\uicontrol {Environment Variables} must be unchecked.
|
||||
\c{p4 set P4CONFIG=p4config.txt} once. You must deselect the
|
||||
\uicontrol {Environment Variables} check box.
|
||||
|
||||
\section1 Editing Files
|
||||
|
||||
@@ -49,11 +54,11 @@
|
||||
To group files for commit, select \uicontrol Tools > \uicontrol Perforce >
|
||||
\uicontrol {Pending Changes}.
|
||||
|
||||
To view information about changelists and the files in them, select
|
||||
To view information about change lists and the files in them, select
|
||||
\uicontrol Tools > \uicontrol Perforce > \uicontrol Describe.
|
||||
|
||||
By default, you are prompted to confirm that you want to submit changes.
|
||||
To suppress the prompt, select \uicontrol Edit > \uicontrol Preferences >
|
||||
By default, you must confirm that you want to submit changes. To suppress
|
||||
the confirmation prompt, select \uicontrol Edit > \uicontrol Preferences >
|
||||
\uicontrol {Version Control} > \uicontrol Perforce, and then deselect the
|
||||
\uicontrol {Prompt on submit} check box.
|
||||
*/
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
\uicontrol Subversion > \uicontrol Describe to display commit log messages
|
||||
for a revision.
|
||||
|
||||
By default, you are prompted to confirm that you want to submit changes.
|
||||
To suppress the prompt, select \uicontrol Edit > \uicontrol Preferences >
|
||||
By default, you must confirm that you want to submit changes. To suppress the
|
||||
confirmation prompt, select \uicontrol Edit > \uicontrol Preferences >
|
||||
\uicontrol {Version Control} > \uicontrol Subversion, and then deselect the
|
||||
\uicontrol {Prompt on submit} check box.
|
||||
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
Once you have finished making changes, submit them to the version control
|
||||
system by choosing \uicontrol{Commit} or \uicontrol{Submit}. \QC displays a
|
||||
commit page containing a text editor where you can enter your commit
|
||||
message and a checkable list of modified files to be included.
|
||||
message and a checkable list of modified files to include.
|
||||
|
||||
\section2 Reverting Changes
|
||||
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
|
||||
\image qtcreator-vcs-diff.png
|
||||
|
||||
The diff is displayed side-by-side in a \l{Comparing Files}{diff editor}
|
||||
by default. To use the unified diff view instead, select the
|
||||
The \l{Comparing Files}{diff editor} displays the diff side-by-side. To use
|
||||
the unified diff view instead, select the
|
||||
\uicontrol {Switch to Unified Diff Editor} (1) option from the toolbar.
|
||||
In both views, you can use context menu commands to apply, revert, stage,
|
||||
and unstage chunks or selected lines, as well as send chunks to a code
|
||||
@@ -113,19 +113,30 @@
|
||||
|
||||
\section2 Viewing Annotations
|
||||
|
||||
To view annotations, select \uicontrol{Blame}. The view displays the lines
|
||||
of the file prepended by the commit identifier they originate from. Clicking
|
||||
on the commit identifier shows a detailed description of the change.
|
||||
To view annotations, select \uicontrol {Blame}. The \uicontrol {Git Blame}
|
||||
view displays the lines of the file prepended by the commit identifier they
|
||||
originate from.
|
||||
|
||||
\image qtcreator-git-blame.webp "Git Blame view"
|
||||
|
||||
Click the commit identifier to show a detailed description of the change.
|
||||
|
||||
To show the annotation of a previous version, right-click on the commit
|
||||
identifier and select \uicontrol {Blame Parent Revision}. This allows you
|
||||
to navigate through the history of the file and obtain previous versions
|
||||
of it.
|
||||
|
||||
To view moved or copied lines within a file or between files, select
|
||||
\uicontrol {Detect Moves Within File}, \uicontrol {Detect Moves Between Files},
|
||||
or \uicontrol {Detect Moves and Copies Between Files}.
|
||||
|
||||
To hide the date and time information in the view, select
|
||||
\uicontrol {Omit Date}.
|
||||
|
||||
The other actions in the context-menu enable you to apply actions to the
|
||||
commit, such as cherry-pick, checkout, or revert it.
|
||||
|
||||
To rescan the files, click \inlineimage icons/reload_gray.png
|
||||
To rescan the files, select \inlineimage icons/reload_gray.png
|
||||
(\uicontrol Reload).
|
||||
|
||||
\section2 Staging Changes
|
||||
@@ -136,7 +147,7 @@
|
||||
|
||||
\section2 Resetting Changes
|
||||
|
||||
Git has an index that is used to stage changes. The index is committed on
|
||||
Git uses an index to stage changes. The index is committed on
|
||||
the next commit. Git allows you to revert back to the state of the last
|
||||
commit as well as to the state staged in the index.
|
||||
|
||||
@@ -158,9 +169,8 @@
|
||||
|
||||
To clean the working directory, select \uicontrol {Build Project} > \uicontrol {Clean}.
|
||||
All files that are not under version control are displayed in
|
||||
the \uicontrol {Clean Repository} dialog. Ignored files are
|
||||
deselected by default. Select the files to delete and click
|
||||
\uicontrol Delete.
|
||||
the \uicontrol {Clean Repository} dialog. Ignored files are deselected by
|
||||
default. Select the files to delete, and then select \uicontrol Delete.
|
||||
|
||||
\section1 Working with Local Repositories
|
||||
|
||||
@@ -185,7 +195,7 @@
|
||||
|
||||
To submit your changes to Git, select \uicontrol Commit. \QC displays a
|
||||
commit page containing a text editor where you can enter your commit
|
||||
message and a checkable list of modified files to be included.
|
||||
message and a checkable list of modified files to include.
|
||||
|
||||
\image qtcreator-vcs-commit.png "Committing changes with Git"
|
||||
|
||||
@@ -194,7 +204,7 @@
|
||||
|
||||
In \uicontrol {Commit Information}, you can edit information about the
|
||||
author of the commit. To bypass re-commit and commit message hooks,
|
||||
select \uicontrol {Bypass hooks}. If signoffs are used for your project,
|
||||
select \uicontrol {Bypass hooks}. If your project uses signoffs,
|
||||
select \uicontrol {Sign off} to add a \e signed-off-by trailer by the
|
||||
author at the end of the commit log message.
|
||||
|
||||
@@ -202,7 +212,7 @@
|
||||
|
||||
In \uicontrol Files, select the files to include in the commit.
|
||||
|
||||
When you have finished filling out the commit page information, click on
|
||||
When you have finished filling out the commit page information, select
|
||||
\uicontrol Commit to start committing.
|
||||
|
||||
The \uicontrol {Diff Selected Files} button opens a \l{Viewing Git Diff}
|
||||
@@ -236,7 +246,7 @@
|
||||
|
||||
To amend an earlier comment in a series of related commits, select
|
||||
\uicontrol Tools > \uicontrol Git > \uicontrol {Local Repository} >
|
||||
\uicontrol {Fixup Previous Commit}. This operation is done using interactive
|
||||
\uicontrol {Fixup Previous Commit}. This operation uses interactive
|
||||
rebase. In case of conflicts, a merge tool is suggested.
|
||||
|
||||
\section2 Resetting Local Repository
|
||||
@@ -265,9 +275,9 @@
|
||||
|
||||
\section2 Working with Branches
|
||||
|
||||
To work with Git branches, select \uicontrol {Branches}. The checked out
|
||||
branch is shown in bold and underlined in the list of branches in the
|
||||
\uicontrol {Git Branches} sidebar view.
|
||||
To work with Git branches, select \uicontrol {Branches}. The
|
||||
\uicontrol {Git Branches} sidebar view shows the checked out
|
||||
branch in bold and underlined in the list of branches.
|
||||
|
||||
\image qtcreator-vcs-gitbranch.png "Git Branches sidebar view"
|
||||
|
||||
@@ -283,13 +293,13 @@
|
||||
If you checked out a specific commit, the list of branches displays a
|
||||
\e {Detached HEAD} entry.
|
||||
|
||||
For local and remote branches, the changes log can be shown by double
|
||||
clicking on the branch name.
|
||||
For local and remote branches, double-click the branch name to view the
|
||||
change log.
|
||||
|
||||
To refresh the list of branches, click \inlineimage icons/reload_gray.png
|
||||
To refresh the list of branches, select \inlineimage icons/reload_gray.png
|
||||
(\uicontrol Refresh).
|
||||
|
||||
The following operations are supported in the context-menu for a branch:
|
||||
The context menu for a branch contains the following functions:
|
||||
|
||||
\table
|
||||
\header
|
||||
@@ -347,9 +357,9 @@
|
||||
\li Push the committed changes to the selected remote branch.
|
||||
\endtable
|
||||
|
||||
The following additional context-menu operations are available for
|
||||
\uicontrol{Remote Branches}. The context-menu can be opened on
|
||||
\uicontrol{Remote Branches} or on a specific remote repository.
|
||||
The context menu for a remote branch contains the following additional
|
||||
functions. To open it, select \uicontrol{Remote Branches} or a remote
|
||||
repository.
|
||||
|
||||
\table
|
||||
\header
|
||||
@@ -378,7 +388,7 @@
|
||||
|
||||
\section2 Applying Patches
|
||||
|
||||
Patches are rewriting instructions that can be applied to a set of files.
|
||||
Patches are rewriting instructions that Git can apply to a set of files.
|
||||
To apply a patch file that is open in \QC, select \uicontrol Patch >
|
||||
\uicontrol {Apply from Editor}.
|
||||
|
||||
@@ -389,7 +399,7 @@
|
||||
|
||||
With Git, you can put your current set of changes onto a virtual shelf
|
||||
called a \e stash. Stashes are useful, for example, to put aside a set of
|
||||
changes to work on higher priority tasks or to pull in new chages from
|
||||
changes to work on higher priority tasks or to pull in new changes from
|
||||
another repository.
|
||||
|
||||
To stash all local changes, select \uicontrol Stash > \uicontrol Stash. The
|
||||
@@ -401,7 +411,7 @@
|
||||
display or delete them, select \uicontrol Stashes.
|
||||
|
||||
To save a snapshot of your current work under a name for later reference,
|
||||
select \uicontrol {Take Snapshot}. The working copy is unchanged. For
|
||||
select \uicontrol {Take Snapshot}. The working copy is not changed. For
|
||||
example, if you want to try something and find out later that it does not
|
||||
work, you can discard the changes and return to the state of the snapshot.
|
||||
|
||||
@@ -444,8 +454,8 @@
|
||||
To start controlling a project directory that is currently not under
|
||||
version control, select \uicontrol Tools > \uicontrol Git >
|
||||
\uicontrol {Create Repository}. \QC creates a new subdirectory named .git
|
||||
that contains all the necessary repository files. However, nothing in the
|
||||
project is tracked yet, so you will need to create an initial commit to
|
||||
that contains all the necessary repository files. However, Git does not track
|
||||
anything in the project yet, so you will need to create an initial commit to
|
||||
start tracking the project files.
|
||||
|
||||
\section1 Working with Remote Repositories
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
|
||||
This tutorial describes how to use \QC to create a small Qt application,
|
||||
Text Finder. It is a simplified version of the Qt UI Tools \l{Text Finder
|
||||
Example}. The application user interface is constructed from Qt widgets by
|
||||
using \QD. The application logic is written in C++ by using the code editor.
|
||||
Example}. We use \QD to construct the application user interface from
|
||||
Qt widgets and the code editor to write the application logic in C++.
|
||||
|
||||
\image qtcreator-textfinder-screenshot.png
|
||||
|
||||
@@ -91,8 +91,8 @@
|
||||
|
||||
\endlist
|
||||
|
||||
\note The project opens in the \uicontrol Edit mode, and these instructions are
|
||||
hidden. To return to these instructions, open the \uicontrol Help mode.
|
||||
\note The project opens in the \uicontrol Edit mode, which hides these
|
||||
instructions. To return to these instructions, open the \uicontrol Help mode.
|
||||
|
||||
The TextFinder project now contains the following files:
|
||||
|
||||
@@ -187,9 +187,9 @@
|
||||
\li Select \uicontrol {Go to Slot} > \uicontrol {clicked()}, and
|
||||
then select \uicontrol OK.
|
||||
|
||||
A private slot, \c{on_findButton_clicked()}, is added to the
|
||||
This adds a private slot, \c{on_findButton_clicked()}, to the
|
||||
header file, textfinder.h and a private function,
|
||||
\c{TextFinder::on_findButton_clicked()}, is added to the
|
||||
\c{TextFinder::on_findButton_clicked()}, to the
|
||||
source file, textfinder.cpp.
|
||||
|
||||
\endlist
|
||||
@@ -214,8 +214,7 @@
|
||||
\c{textfinder.h} file to open it for editing.
|
||||
|
||||
\li Add a private function to the \c{private} section, after the
|
||||
\c{Ui::TextFinder} pointer, as illustrated by the following code
|
||||
snippet:
|
||||
\c{Ui::TextFinder} pointer:
|
||||
|
||||
\snippet textfinder/textfinder.h 0
|
||||
|
||||
@@ -233,8 +232,7 @@
|
||||
|
||||
\li Add code to load a text file using QFile, read it with QTextStream,
|
||||
and then display it on \c{textEdit} with
|
||||
\l{QTextEdit::setPlainText()}.
|
||||
This is illustrated by the following code snippet:
|
||||
\l{QTextEdit::setPlainText()}:
|
||||
|
||||
\snippet textfinder/textfinder.cpp 0
|
||||
|
||||
@@ -245,21 +243,18 @@
|
||||
|
||||
\li For the \c{on_findButton_clicked()} slot, add code to extract the
|
||||
search string and use the \l{QTextEdit::find()} function
|
||||
to look for the search string within the text file. This is
|
||||
illustrated by the following code snippet:
|
||||
to look for the search string within the text file:
|
||||
|
||||
\snippet textfinder/textfinder.cpp 2
|
||||
|
||||
\li Once both of these functions are complete, add a line to call
|
||||
\c{loadTextFile()} in the constructor, as illustrated by the
|
||||
following code snippet:
|
||||
\li Add a line to call \c{loadTextFile()} in the constructor:
|
||||
|
||||
\snippet textfinder/textfinder.cpp 3
|
||||
|
||||
\endlist
|
||||
|
||||
The \c{on_findButton_clicked()} slot is called automatically in
|
||||
the uic generated ui_textfinder.h file by this line of code:
|
||||
The following line of code automatically calls the \c{on_findButton_clicked()}
|
||||
slot in the uic generated ui_textfinder.h file:
|
||||
|
||||
\code
|
||||
QMetaObject::connectSlotsByName(TextFinder);
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
On \macos, a GUI application must be built and run from a bundle. A bundle
|
||||
is a directory structure that appears as a single entity when viewed in the
|
||||
Finder. A bundle for an application typcially contains the executable and
|
||||
Finder. A bundle for an application typically contains the executable and
|
||||
all the resources it needs.
|
||||
|
||||
\QC uses its own set of Qt Libraries located in the bundle, and therefore,
|
||||
|
||||
@@ -6,16 +6,16 @@ import qbs.Utilities
|
||||
Module {
|
||||
Depends { name: "cpp"; required: false }
|
||||
|
||||
property string qtcreator_display_version: '10.0.0-beta1'
|
||||
property string qtcreator_display_version: '9.0.1'
|
||||
property string ide_version_major: '9'
|
||||
property string ide_version_minor: '0'
|
||||
property string ide_version_release: '82'
|
||||
property string ide_version_release: '1'
|
||||
property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.'
|
||||
+ ide_version_release
|
||||
|
||||
property string ide_compat_version_major: '9'
|
||||
property string ide_compat_version_minor: '0'
|
||||
property string ide_compat_version_release: '82'
|
||||
property string ide_compat_version_release: '0'
|
||||
property string qtcreator_compat_version: ide_compat_version_major + '.'
|
||||
+ ide_compat_version_minor + '.' + ide_compat_version_release
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
QTCREATOR_VERSION = 9.0.82
|
||||
QTCREATOR_COMPAT_VERSION = 9.0.82
|
||||
QTCREATOR_DISPLAY_VERSION = 10.0.0-beta1
|
||||
QTCREATOR_VERSION = 9.0.1
|
||||
QTCREATOR_COMPAT_VERSION = 9.0.0
|
||||
QTCREATOR_DISPLAY_VERSION = 9.0.1
|
||||
QTCREATOR_COPYRIGHT_YEAR = 2022
|
||||
|
||||
IDE_DISPLAY_NAME = Qt Creator
|
||||
|
||||
@@ -18,6 +18,11 @@
|
||||
"specific_qt_versions": [
|
||||
{
|
||||
"versions": ["default"],
|
||||
"sdk_essential_packages": ["build-tools;31.0.0", "ndk;25.1.8937393"],
|
||||
"ndk_path": "ndk/25.1.8937393"
|
||||
},
|
||||
{
|
||||
"versions": ["6.4"],
|
||||
"sdk_essential_packages": ["build-tools;31.0.0", "ndk;23.1.7779620"],
|
||||
"ndk_path": "ndk/23.1.7779620"
|
||||
},
|
||||
|
||||
@@ -7,7 +7,7 @@ env:
|
||||
QT_VERSION: %{JS: Util.qtVersion()}
|
||||
QT_CREATOR_VERSION: %{JS: Util.qtCreatorVersion()}
|
||||
QT_CREATOR_SNAPSHOT: NO
|
||||
CMAKE_VERSION: 3.18.3
|
||||
CMAKE_VERSION: 3.21.1
|
||||
NINJA_VERSION: 1.10.1
|
||||
|
||||
jobs:
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
name: "Windows Latest MSVC", artifact: "Windows-x64",
|
||||
os: windows-latest,
|
||||
cc: "cl", cxx: "cl",
|
||||
environment_script: "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat",
|
||||
environment_script: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat",
|
||||
}
|
||||
- {
|
||||
name: "Ubuntu Latest GCC", artifact: "Linux-x64",
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Download Ninja and CMake
|
||||
shell: cmake -P {0}
|
||||
@@ -45,16 +45,16 @@ jobs:
|
||||
|
||||
if ("${{ runner.os }}" STREQUAL "Windows")
|
||||
set(ninja_suffix "win.zip")
|
||||
set(cmake_suffix "win64-x64.zip")
|
||||
set(cmake_dir "cmake-${cmake_version}-win64-x64/bin")
|
||||
set(cmake_suffix "windows-x86_64.zip")
|
||||
set(cmake_dir "cmake-${cmake_version}-windows-x86_64/bin")
|
||||
elseif ("${{ runner.os }}" STREQUAL "Linux")
|
||||
set(ninja_suffix "linux.zip")
|
||||
set(cmake_suffix "Linux-x86_64.tar.gz")
|
||||
set(cmake_dir "cmake-${cmake_version}-Linux-x86_64/bin")
|
||||
set(cmake_suffix "linux-x86_64.tar.gz")
|
||||
set(cmake_dir "cmake-${cmake_version}-linux-x86_64/bin")
|
||||
elseif ("${{ runner.os }}" STREQUAL "macOS")
|
||||
set(ninja_suffix "mac.zip")
|
||||
set(cmake_suffix "Darwin-x86_64.tar.gz")
|
||||
set(cmake_dir "cmake-${cmake_version}-Darwin-x86_64/CMake.app/Contents/bin")
|
||||
set(cmake_suffix "macos-universal.tar.gz")
|
||||
set(cmake_dir "cmake-${cmake_version}-macos-universal/CMake.app/Contents/bin")
|
||||
endif()
|
||||
|
||||
set(ninja_url "https://github.com/ninja-build/ninja/releases/download/v${ninja_version}/ninja-${ninja_suffix}")
|
||||
@@ -102,74 +102,62 @@ jobs:
|
||||
run: |
|
||||
set(qt_version "$ENV{QT_VERSION}")
|
||||
|
||||
string(REGEX MATCH "^[0-9]+" qt_version_major "${qt_version}")
|
||||
string(REPLACE "." "" qt_version_dotless "${qt_version}")
|
||||
if ("${{ runner.os }}" STREQUAL "Windows")
|
||||
set(url_os "windows_x86")
|
||||
set(qt_package_arch_suffix "win64_msvc2019_64")
|
||||
set(qt_dir_prefix "${qt_version}/msvc2019_64")
|
||||
set(qt_package_suffix "-Windows-Windows_10-MSVC2019-Windows-Windows_10-X86_64")
|
||||
set(qt_package_suffix "-Windows-Windows_10_21H2-MSVC2019-Windows-Windows_10_21H2-X86_64")
|
||||
elseif ("${{ runner.os }}" STREQUAL "Linux")
|
||||
set(url_os "linux_x64")
|
||||
set(qt_package_arch_suffix "gcc_64")
|
||||
set(qt_dir_prefix "${qt_version}/gcc_64")
|
||||
if("${qt_version_major}" STREQUAL "5")
|
||||
set(qt_package_suffix "-Linux-RHEL_7_6-GCC-Linux-RHEL_7_6-X86_64")
|
||||
else()
|
||||
set(qt_package_suffix "-Linux-RHEL_8_2-GCC-Linux-RHEL_8_2-X86_64")
|
||||
endif()
|
||||
set(qt_package_suffix "-Linux-RHEL_8_4-GCC-Linux-RHEL_8_4-X86_64")
|
||||
elseif ("${{ runner.os }}" STREQUAL "macOS")
|
||||
set(url_os "mac_x64")
|
||||
set(qt_package_arch_suffix "clang_64")
|
||||
if("${qt_version_major}" STREQUAL "5")
|
||||
set(qt_dir_prefix "${qt_version}/clang_64")
|
||||
set(qt_package_suffix "-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64")
|
||||
else()
|
||||
set(qt_dir_prefix "${qt_version}/macos")
|
||||
set(qt_package_suffix "-MacOS-MacOS_11_00-Clang-MacOS-MacOS_11_00-X86_64-ARM64")
|
||||
endif()
|
||||
set(qt_dir_prefix "${qt_version}/macos")
|
||||
set(qt_package_suffix "-MacOS-MacOS_12-Clang-MacOS-MacOS_12-X86_64-ARM64")
|
||||
endif()
|
||||
|
||||
set(qt_base_url "https://download.qt.io/online/qtsdkrepository/${url_os}/desktop/qt${qt_version_major}_${qt_version_dotless}")
|
||||
set(qt_base_url "https://download.qt.io/online/qtsdkrepository/${url_os}/desktop/qt6_${qt_version_dotless}")
|
||||
file(DOWNLOAD "${qt_base_url}/Updates.xml" ./Updates.xml SHOW_PROGRESS)
|
||||
|
||||
file(READ ./Updates.xml updates_xml)
|
||||
string(REGEX MATCH "<Name>qt.qt${qt_version_major}.*<Version>([0-9+-.]+)</Version>" updates_xml_output "${updates_xml}")
|
||||
string(REGEX MATCH "<Name>qt.qt6.*<Version>([0-9+-.]+)</Version>" updates_xml_output "${updates_xml}")
|
||||
set(qt_package_version ${CMAKE_MATCH_1})
|
||||
|
||||
file(MAKE_DIRECTORY qt)
|
||||
file(MAKE_DIRECTORY qt6)
|
||||
|
||||
# Save the path for other steps
|
||||
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/qt/${qt_dir_prefix}" qt_dir)
|
||||
message("::set-output name=qt_dir::${qt_dir}")
|
||||
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/qt6/${qt_dir_prefix}" qt_dir)
|
||||
file(APPEND "$ENV{GITHUB_OUTPUT}" "qt_dir=${qt_dir}")
|
||||
|
||||
message("Downloading Qt to ${qt_dir}")
|
||||
function(downloadAndExtract url archive)
|
||||
message("Downloading ${url}")
|
||||
file(DOWNLOAD "${url}" ./${archive} SHOW_PROGRESS)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ../${archive} WORKING_DIRECTORY qt)
|
||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ../${archive} WORKING_DIRECTORY qt6)
|
||||
endfunction()
|
||||
|
||||
foreach(package qtbase qtdeclarative)
|
||||
downloadAndExtract(
|
||||
"${qt_base_url}/qt.qt${qt_version_major}.${qt_version_dotless}.${qt_package_arch_suffix}/${qt_package_version}${package}${qt_package_suffix}.7z"
|
||||
"${qt_base_url}/qt.qt6.${qt_version_dotless}.${qt_package_arch_suffix}/${qt_package_version}${package}${qt_package_suffix}.7z"
|
||||
${package}.7z
|
||||
)
|
||||
endforeach()
|
||||
|
||||
if("${qt_version_major}" STREQUAL "6")
|
||||
foreach(package qt5compat qtshadertools)
|
||||
downloadAndExtract(
|
||||
"${qt_base_url}/qt.qt6.${qt_version_dotless}.${package}.${qt_package_arch_suffix}/${qt_package_version}${package}${qt_package_suffix}.7z"
|
||||
${package}.7z
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
foreach(package qt5compat qtshadertools)
|
||||
downloadAndExtract(
|
||||
"${qt_base_url}/qt.qt6.${qt_version_dotless}.${package}.${qt_package_arch_suffix}/${qt_package_version}${package}${qt_package_suffix}.7z"
|
||||
${package}.7z
|
||||
)
|
||||
endforeach()
|
||||
|
||||
# uic depends on libicu56.so
|
||||
if ("${{ runner.os }}" STREQUAL "Linux")
|
||||
downloadAndExtract(
|
||||
"${qt_base_url}/qt.qt${qt_version_major}.${qt_version_dotless}.${qt_package_arch_suffix}/${qt_package_version}icu-linux-Rhel7.2-x64.7z"
|
||||
"${qt_base_url}/qt.qt6.${qt_version_dotless}.${qt_package_arch_suffix}/${qt_package_version}icu-linux-Rhel7.2-x64.7z"
|
||||
icu.7z
|
||||
)
|
||||
endif()
|
||||
@@ -196,7 +184,7 @@ jobs:
|
||||
|
||||
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}/qtcreator" qtc_dir)
|
||||
# Save the path for other steps
|
||||
message("::set-output name=qtc_dir::${qtc_dir}")
|
||||
file(APPEND "$ENV{GITHUB_OUTPUT}" "qtc_dir=${qtc_dir}")
|
||||
|
||||
file(MAKE_DIRECTORY qtcreator)
|
||||
|
||||
@@ -258,7 +246,7 @@ jobs:
|
||||
message(FATAL_ERROR "Build failed")
|
||||
endif()
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/upload-artifact@v3
|
||||
id: upload_artifact
|
||||
with:
|
||||
path: ./${{ env.PLUGIN_NAME }}-${{ env.QT_CREATOR_VERSION }}-${{ matrix.config.artifact }}.7z
|
||||
@@ -272,7 +260,7 @@ jobs:
|
||||
steps:
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: actions/create-release@v1.0.0
|
||||
uses: actions/create-release@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
@@ -285,7 +273,7 @@ jobs:
|
||||
run: |
|
||||
echo "${{ steps.create_release.outputs.upload_url }}" > ./upload_url
|
||||
|
||||
- uses: actions/upload-artifact@v1
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
path: ./upload_url
|
||||
name: upload_url
|
||||
@@ -314,24 +302,24 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Download artifact
|
||||
uses: actions/download-artifact@v1
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: ${{ env.PLUGIN_NAME }}-${{ env.QT_CREATOR_VERSION }}-${{ matrix.config.artifact }}
|
||||
path: ./
|
||||
|
||||
- name: Download URL
|
||||
uses: actions/download-artifact@v1
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: upload_url
|
||||
path: ./
|
||||
- id: set_upload_url
|
||||
run: |
|
||||
upload_url=`cat ./upload_url`
|
||||
echo ::set-output name=upload_url::$upload_url
|
||||
echo upload_url=$upload_url >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Upload to Release
|
||||
id: upload_to_release
|
||||
uses: actions/upload-release-asset@v1.0.1
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
23
src/libs/3rdparty/cplusplus/Bind.cpp
vendored
23
src/libs/3rdparty/cplusplus/Bind.cpp
vendored
@@ -276,8 +276,25 @@ FullySpecifiedType Bind::postfixDeclarator(PostfixDeclaratorAST *ast, const Full
|
||||
return value;
|
||||
}
|
||||
|
||||
bool Bind::preVisit(AST *)
|
||||
bool Bind::preVisit(AST *ast)
|
||||
{
|
||||
if (_typeWasUnsignedOrSigned) {
|
||||
if (SimpleSpecifierAST *simpleAst = ast->asSimpleSpecifier()) {
|
||||
switch (tokenKind(simpleAst->specifier_token)) {
|
||||
case T_CHAR:
|
||||
case T_CHAR16_T:
|
||||
case T_CHAR32_T:
|
||||
case T_WCHAR_T:
|
||||
case T_INT:
|
||||
case T_SHORT:
|
||||
case T_LONG:
|
||||
_type.setType(&UndefinedType::instance);
|
||||
break;
|
||||
}
|
||||
}
|
||||
_typeWasUnsignedOrSigned = false;
|
||||
}
|
||||
|
||||
++_depth;
|
||||
if (_depth > kMaxDepth)
|
||||
return false;
|
||||
@@ -2980,13 +2997,17 @@ bool Bind::visit(SimpleSpecifierAST *ast)
|
||||
case T_SIGNED:
|
||||
if (_type.isSigned())
|
||||
translationUnit()->error(ast->specifier_token, "duplicate `%s'", spell(ast->specifier_token));
|
||||
_type.setType(control()->integerType(IntegerType::Int));
|
||||
_type.setSigned(true);
|
||||
_typeWasUnsignedOrSigned = true;
|
||||
break;
|
||||
|
||||
case T_UNSIGNED:
|
||||
if (_type.isUnsigned())
|
||||
translationUnit()->error(ast->specifier_token, "duplicate `%s'", spell(ast->specifier_token));
|
||||
_type.setType(control()->integerType(IntegerType::Int));
|
||||
_type.setUnsigned(true);
|
||||
_typeWasUnsignedOrSigned = true;
|
||||
break;
|
||||
|
||||
case T_CHAR:
|
||||
|
||||
1
src/libs/3rdparty/cplusplus/Bind.h
vendored
1
src/libs/3rdparty/cplusplus/Bind.h
vendored
@@ -300,6 +300,7 @@ private:
|
||||
int _methodKey;
|
||||
bool _skipFunctionBodies;
|
||||
int _depth;
|
||||
bool _typeWasUnsignedOrSigned = false;
|
||||
};
|
||||
|
||||
} // namespace CPlusPlus
|
||||
|
||||
@@ -38,8 +38,8 @@ find_package(Qt6 COMPONENTS ShaderTools QUIET)
|
||||
add_qtc_library(Tracing
|
||||
CONDITION TARGET Qt6::ShaderTools AND TARGET Qt5::Quick
|
||||
FEATURE_INFO
|
||||
DEPENDS Utils Qt5::Qml Qt5::Quick
|
||||
PUBLIC_DEPENDS Qt5::Widgets
|
||||
DEPENDS Utils Qt5::Quick
|
||||
PUBLIC_DEPENDS Qt5::Widgets Qt5::Qml
|
||||
SOURCES
|
||||
${TEST_SOURCES}
|
||||
)
|
||||
|
||||
@@ -182,6 +182,8 @@ bool DeviceShell::start()
|
||||
|
||||
setupShellProcess(m_shellProcess.get());
|
||||
|
||||
CommandLine cmdLine = m_shellProcess->commandLine();
|
||||
|
||||
m_shellProcess->setProcessMode(ProcessMode::Writer);
|
||||
|
||||
// Moving the process into its own thread ...
|
||||
@@ -232,7 +234,7 @@ bool DeviceShell::start()
|
||||
&result);
|
||||
|
||||
if (!result) {
|
||||
startupFailed(m_shellProcess->commandLine());
|
||||
startupFailed(cmdLine);
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -240,9 +242,9 @@ bool DeviceShell::start()
|
||||
|
||||
bool DeviceShell::checkCommand(const QByteArray &command)
|
||||
{
|
||||
const QByteArray checkBase64Cmd = "(which base64 || echo '<missing>')\n";
|
||||
const QByteArray checkCmd = "(which " + command + " || echo '<missing>')\n";
|
||||
|
||||
m_shellProcess->writeRaw(checkBase64Cmd);
|
||||
m_shellProcess->writeRaw(checkCmd);
|
||||
if (!m_shellProcess->waitForReadyRead()) {
|
||||
qCWarning(deviceShellLog) << "Timeout while trying to check for" << command;
|
||||
return false;
|
||||
@@ -265,9 +267,12 @@ bool DeviceShell::installShellScript()
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!checkCommand("base64")) {
|
||||
m_shellScriptState = State::NoScript;
|
||||
return false;
|
||||
static const QList<QByteArray> requiredCommands
|
||||
= {"base64", "cat", "echo", "kill", "mkfifo", "mktemp", "rm"};
|
||||
|
||||
for (const QByteArray &command : requiredCommands) {
|
||||
if (!checkCommand(command))
|
||||
return false;
|
||||
}
|
||||
|
||||
const static QByteArray shellScriptBase64 = FilePath(":/utils/scripts/deviceshell.sh")
|
||||
|
||||
@@ -348,15 +348,17 @@ QStringView FilePath::pathView() const
|
||||
|
||||
QString FilePath::path() const
|
||||
{
|
||||
if (m_data.startsWith("/./"))
|
||||
return m_data.mid(3, m_pathLen - 3);
|
||||
QTC_ASSERT(!m_data.startsWith(u"/./"), return m_data.mid(3, m_pathLen - 3));
|
||||
return m_data.left(m_pathLen);
|
||||
}
|
||||
|
||||
void FilePath::setParts(const QStringView scheme, const QStringView host, const QStringView path)
|
||||
void FilePath::setParts(const QStringView scheme, const QStringView host, QStringView path)
|
||||
{
|
||||
QTC_CHECK(!scheme.contains('/'));
|
||||
|
||||
if (path.startsWith(u"/./"))
|
||||
path = path.mid(3);
|
||||
|
||||
m_data = path.toString() + scheme.toString() + host.toString();
|
||||
m_schemeLen = scheme.size();
|
||||
m_hostLen = host.size();
|
||||
@@ -1086,6 +1088,7 @@ QString FilePath::calcRelativePath(const QString &absolutePath, const QString &a
|
||||
*/
|
||||
FilePath FilePath::onDevice(const FilePath &deviceTemplate) const
|
||||
{
|
||||
isSameDevice(deviceTemplate);
|
||||
const bool sameDevice = scheme() == deviceTemplate.scheme() && host() == deviceTemplate.host();
|
||||
if (sameDevice)
|
||||
return *this;
|
||||
@@ -1343,7 +1346,7 @@ bool FilePath::isNewerThan(const QDateTime &timeStamp) const
|
||||
*/
|
||||
Qt::CaseSensitivity FilePath::caseSensitivity() const
|
||||
{
|
||||
if (scheme().isEmpty())
|
||||
if (m_schemeLen == 0)
|
||||
return HostOsInfo::fileNameCaseSensitivity();
|
||||
|
||||
// FIXME: This could or possibly should the target device's file name case sensitivity
|
||||
|
||||
@@ -10,7 +10,9 @@
|
||||
#include <qt_windows.h>
|
||||
#else
|
||||
#include <errno.h>
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
@@ -127,7 +129,7 @@ void ProcessHelper::interruptPid(qint64 pid)
|
||||
#ifdef Q_OS_WIN
|
||||
EnumWindows(sendInterruptMessageToAllWindowsOfProcess_enumWnd, pid);
|
||||
#else
|
||||
Q_UNUSED(pid)
|
||||
::kill(pid, SIGINT);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include <QByteArray>
|
||||
#include <QDebug>
|
||||
#include <QMutex>
|
||||
#include <QTime>
|
||||
|
||||
#if defined(Q_OS_UNIX)
|
||||
#include <stdio.h>
|
||||
@@ -114,11 +115,12 @@ void dumpBacktrace(int maxdepth)
|
||||
|
||||
void writeAssertLocation(const char *msg)
|
||||
{
|
||||
const QByteArray time = QTime::currentTime().toString(Qt::ISODateWithMs).toLatin1();
|
||||
static bool goBoom = qEnvironmentVariableIsSet("QTC_FATAL_ASSERTS");
|
||||
if (goBoom)
|
||||
qFatal("SOFT ASSERT made fatal: %s", msg);
|
||||
qFatal("SOFT ASSERT [%s] made fatal: %s", time.data(), msg);
|
||||
else
|
||||
qDebug("SOFT ASSERT: %s", msg);
|
||||
qDebug("SOFT ASSERT [%s]: %s", time.data(), msg);
|
||||
|
||||
static int maxdepth = qEnvironmentVariableIntValue("QTC_BACKTRACE_MAXDEPTH");
|
||||
if (maxdepth != 0)
|
||||
|
||||
@@ -459,8 +459,7 @@ private:
|
||||
m_handle->kill();
|
||||
break;
|
||||
case ControlSignal::Interrupt:
|
||||
if (m_setup.m_useCtrlCStub) // bypass launcher and interrupt directly
|
||||
ProcessHelper::interruptPid(m_handle->processId());
|
||||
ProcessHelper::interruptPid(m_handle->processId());
|
||||
break;
|
||||
case ControlSignal::KickOff:
|
||||
QTC_CHECK(false);
|
||||
|
||||
@@ -306,7 +306,14 @@ void StyleHelper::drawArrow(QStyle::PrimitiveElement element, QPainter *painter,
|
||||
static const QCommonStyle* const style = qobject_cast<QCommonStyle*>(QApplication::style());
|
||||
if (!style)
|
||||
return;
|
||||
tweakedOption.palette.setColor(QPalette::ButtonText, color.rgb());
|
||||
|
||||
// Workaround for QTCREATORBUG-28470
|
||||
QPalette pal = tweakedOption.palette;
|
||||
pal.setBrush(QPalette::Base, pal.text()); // Base and Text differ, causing a detachment.
|
||||
// Inspired by tst_QPalette::cacheKey()
|
||||
pal.setColor(QPalette::ButtonText, color.rgb());
|
||||
|
||||
tweakedOption.palette = pal;
|
||||
tweakedOption.rect = rect;
|
||||
painter.setOpacity(color.alphaF());
|
||||
style->QCommonStyle::drawPrimitive(element, &tweakedOption, &painter);
|
||||
|
||||
@@ -257,6 +257,8 @@ void Theme::setHelpMenu(QMenu *menu)
|
||||
{
|
||||
#ifdef Q_OS_MACOS
|
||||
Internal::setMacOSHelpMenu(menu);
|
||||
#else
|
||||
Q_UNUSED(menu)
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -34,12 +34,29 @@ QdbDeployConfigurationFactory::QdbDeployConfigurationFactory()
|
||||
addInitialStep(Qdb::Constants::QdbStopApplicationStepId);
|
||||
addInitialStep(RemoteLinux::Constants::RsyncDeployStepId, [](Target *target) {
|
||||
auto device = DeviceKitAspect::device(target->kit());
|
||||
return device && device->extraData(RemoteLinux::Constants::SupportsRSync).toBool();
|
||||
auto buildDevice = BuildDeviceKitAspect::device(target->kit());
|
||||
if (buildDevice && buildDevice->rootPath().needsDevice())
|
||||
return false;
|
||||
return !device
|
||||
|| (device && device->extraData(RemoteLinux::Constants::SupportsRSync).toBool());
|
||||
});
|
||||
addInitialStep(RemoteLinux::Constants::DirectUploadStepId, [](Target *target) {
|
||||
auto device = DeviceKitAspect::device(target->kit());
|
||||
auto buildDevice = BuildDeviceKitAspect::device(target->kit());
|
||||
if (buildDevice && buildDevice->rootPath().needsDevice())
|
||||
return false;
|
||||
return device && !device->extraData(RemoteLinux::Constants::SupportsRSync).toBool();
|
||||
});
|
||||
// This step is for:
|
||||
// a) A remote build device, as they do not support real rsync yet.
|
||||
// b) If there is no target device setup yet.
|
||||
addInitialStep(RemoteLinux::Constants::DirectUploadStepId, [](Target *target) {
|
||||
auto device = DeviceKitAspect::device(target->kit());
|
||||
auto buildDevice = BuildDeviceKitAspect::device(target->kit());
|
||||
if (buildDevice && buildDevice->rootPath().needsDevice())
|
||||
return true;
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
#include "qdbutils.h"
|
||||
#include "qdbconstants.h"
|
||||
#include "qdbdevicedebugsupport.h"
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
@@ -17,6 +16,7 @@
|
||||
#include <utils/portlist.h>
|
||||
#include <utils/qtcassert.h>
|
||||
#include <utils/qtcprocess.h>
|
||||
#include <utils/theme/theme.h>
|
||||
|
||||
#include <QFormLayout>
|
||||
#include <QLabel>
|
||||
@@ -38,7 +38,7 @@ public:
|
||||
~QdbProcessImpl() { killIfRunning(); }
|
||||
|
||||
private:
|
||||
void sendControlSignal(ControlSignal controlSignal) final
|
||||
void handleSendControlSignal(ControlSignal controlSignal) final
|
||||
{
|
||||
QTC_ASSERT(controlSignal != ControlSignal::Interrupt, return);
|
||||
QTC_ASSERT(controlSignal != ControlSignal::KickOff, return);
|
||||
|
||||
@@ -145,6 +145,24 @@ IAssistProcessor *ClangdCompletionAssistProvider::createProcessor(
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (interface->reason() == ActivationCharacter) {
|
||||
switch (interface->characterAt(interface->position() - 1).toLatin1()) {
|
||||
case '"': case '<': case '/':
|
||||
if (contextAnalyzer.completionAction()
|
||||
!= ClangCompletionContextAnalyzer::CompleteIncludePath) {
|
||||
class NoOpProcessor : public IAssistProcessor {
|
||||
IAssistProposal *perform(const AssistInterface *interface) override
|
||||
{
|
||||
delete interface;
|
||||
return nullptr;
|
||||
}
|
||||
};
|
||||
return new NoOpProcessor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const QString snippetsGroup = contextAnalyzer.addSnippets() && !isInCommentOrString(interface)
|
||||
? CppEditor::Constants::CPP_SNIPPETS_GROUP_ID
|
||||
: QString();
|
||||
@@ -166,10 +184,11 @@ bool ClangdCompletionAssistProvider::isActivationCharSequence(const QString &seq
|
||||
|
||||
// We want to minimize unneeded completion requests, as those trigger document updates,
|
||||
// which trigger re-highlighting and diagnostics, which we try to delay.
|
||||
// Therefore, we do not trigger on syntax elements that often occur in non-applicable
|
||||
// contexts, such as '(', '<' or '/'.
|
||||
// Therefore, for '"', '<', and '/', a follow-up check will verify whether we are in
|
||||
// an include completion context and otherwise not start the LSP completion procedure.
|
||||
switch (kind) {
|
||||
case T_DOT: case T_COLON_COLON: case T_ARROW: case T_DOT_STAR: case T_ARROW_STAR: case T_POUND:
|
||||
case T_STRING_LITERAL: case T_ANGLE_STRING_LITERAL: case T_SLASH:
|
||||
qCDebug(clangdLogCompletion) << "detected" << sequence << "as activation char sequence";
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -108,9 +108,8 @@ SettingsPageWidget::SettingsPageWidget()
|
||||
|
||||
using namespace Layouting;
|
||||
|
||||
Row {
|
||||
Tr::tr("Arg&uments:"),
|
||||
diffArgsEdit
|
||||
Form {
|
||||
Tr::tr("Arg&uments:"), diffArgsEdit
|
||||
}.attachTo(diffWidget, WithoutMargins);
|
||||
|
||||
Column {
|
||||
|
||||
@@ -1484,6 +1484,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
|
||||
|
||||
cmd.addArg("-DCMAKE_TOOLCHAIN_FILE:FILEPATH="
|
||||
+ ndkLocation.pathAppended("build/cmake/android.toolchain.cmake").path());
|
||||
cmd.addArg("-DANDROID_USE_LEGACY_TOOLCHAIN_FILE:BOOL=OFF");
|
||||
|
||||
auto androidAbis = bs->data(Android::Constants::AndroidMkSpecAbis).toStringList();
|
||||
QString preferredAbi;
|
||||
|
||||
@@ -163,7 +163,7 @@ void CMakeProject::setupBuildPresets(Internal::PresetsData &presetsData)
|
||||
TaskHub::requestPopup();
|
||||
}
|
||||
|
||||
const QString &configurePresetName = buildPreset.configurePreset.value();
|
||||
const QString &configurePresetName = buildPreset.configurePreset.value_or(QString());
|
||||
buildPreset.environment
|
||||
= Utils::findOrDefault(presetsData.configurePresets,
|
||||
[configurePresetName](
|
||||
|
||||
@@ -2534,6 +2534,9 @@ bool EditorManagerPrivate::saveDocumentAs(IDocument *document)
|
||||
// re-think part of the editors design.
|
||||
|
||||
if (success) {
|
||||
// if document had been temporary before (scratch buffer) - remove the temporary flag
|
||||
document->setTemporary(false);
|
||||
|
||||
addDocumentToRecentFiles(document);
|
||||
emit m_instance->saved(document);
|
||||
}
|
||||
|
||||
@@ -77,6 +77,7 @@ GeneralSettingsWidget::GeneralSettingsWidget(GeneralSettings *q)
|
||||
, m_themeChooser(new ThemeChooser)
|
||||
, m_resetWarningsButton(new QPushButton)
|
||||
{
|
||||
m_languageBox->setObjectName("languageBox");
|
||||
m_languageBox->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLengthWithIcon);
|
||||
m_languageBox->setMinimumContentsLength(20);
|
||||
|
||||
@@ -273,7 +274,7 @@ void GeneralSettings::setShowShortcutsInContextMenu(bool show)
|
||||
ICore::settings()->setValueWithDefault(settingsKeyShortcutsInContextMenu,
|
||||
show,
|
||||
m_defaultShowShortcutsInContextMenu);
|
||||
QGuiApplication::styleHints()->setShowShortcutsInContextMenus(show);
|
||||
QCoreApplication::setAttribute(Qt::AA_DontShowShortcutsInContextMenus, !show);
|
||||
}
|
||||
|
||||
GeneralSettings::GeneralSettings()
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "externaltoolmanager.h"
|
||||
#include "fancytabwidget.h"
|
||||
#include "generalsettings.h"
|
||||
#include "helpmanager.h"
|
||||
#include "icore.h"
|
||||
#include "idocumentfactory.h"
|
||||
#include "jsexpander.h"
|
||||
@@ -1516,8 +1517,17 @@ void MainWindow::changeLog()
|
||||
return;
|
||||
const FilePath file = versionedFiles.at(index).second;
|
||||
QString contents = QString::fromUtf8(file.fileContents().value_or(QByteArray()));
|
||||
contents.replace(QRegularExpression("(QT(CREATOR)?BUG-[0-9]+)"),
|
||||
"[\\1](https://bugreports.qt.io/browse/\\1)");
|
||||
static const QRegularExpression bugexpr("(QT(CREATOR)?BUG-[0-9]+)");
|
||||
contents.replace(bugexpr, "[\\1](https://bugreports.qt.io/browse/\\1)");
|
||||
static const QRegularExpression docexpr("https://doc[.]qt[.]io/qtcreator/([.a-zA-Z/_-]*)");
|
||||
QList<QRegularExpressionMatch> matches;
|
||||
for (const QRegularExpressionMatch &m : docexpr.globalMatch(contents))
|
||||
matches.append(m);
|
||||
Utils::reverseForeach(matches, [&contents](const QRegularExpressionMatch &match) {
|
||||
const QString qthelpUrl = "qthelp://org.qt-project.qtcreator/doc/" + match.captured(1);
|
||||
if (!HelpManager::fileData(qthelpUrl).isEmpty())
|
||||
contents.replace(match.capturedStart(), match.capturedLength(), qthelpUrl);
|
||||
});
|
||||
textEdit->setMarkdown(contents);
|
||||
};
|
||||
connect(versionCombo, &QComboBox::currentIndexChanged, textEdit, showLog);
|
||||
|
||||
@@ -874,21 +874,24 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt
|
||||
editRect.adjust(0, 0, -13, 0);
|
||||
}
|
||||
|
||||
Qt::TextElideMode elideMode = Qt::ElideRight;
|
||||
if (widget && widget->dynamicPropertyNames().contains("elidemode"))
|
||||
elideMode = widget->property("elidemode").value<Qt::TextElideMode>();
|
||||
|
||||
QLatin1Char asterisk('*');
|
||||
int elideWidth = editRect.width();
|
||||
|
||||
bool notElideAsterisk = widget && widget->property("notelideasterisk").toBool()
|
||||
bool notElideAsterisk = elideMode == Qt::ElideRight && widget
|
||||
&& widget->property("notelideasterisk").toBool()
|
||||
&& cb->currentText.endsWith(asterisk)
|
||||
&& option->fontMetrics.horizontalAdvance(cb->currentText) > elideWidth;
|
||||
&& option->fontMetrics.horizontalAdvance(cb->currentText)
|
||||
> elideWidth;
|
||||
|
||||
QString text;
|
||||
if (notElideAsterisk) {
|
||||
elideWidth -= option->fontMetrics.horizontalAdvance(asterisk);
|
||||
text = asterisk;
|
||||
}
|
||||
Qt::TextElideMode elideMode = Qt::ElideRight;
|
||||
if (widget && widget->dynamicPropertyNames().contains("elidemode"))
|
||||
elideMode = widget->property("elidemode").value<Qt::TextElideMode>();
|
||||
text.prepend(option->fontMetrics.elidedText(cb->currentText, elideMode, elideWidth));
|
||||
|
||||
if (creatorTheme()->flag(Theme::ComboBoxDrawTextShadow)
|
||||
|
||||
@@ -244,6 +244,7 @@ ClangdSettingsWidget::ClangdSettingsWidget(const ClangdSettings::Data &settingsD
|
||||
d->useClangdCheckBox.setChecked(settings.useClangd());
|
||||
d->clangdChooser.setExpectedKind(Utils::PathChooser::ExistingCommand);
|
||||
d->clangdChooser.setFilePath(settings.clangdFilePath());
|
||||
d->clangdChooser.setAllowPathFromDevice(true);
|
||||
d->clangdChooser.setEnabled(d->useClangdCheckBox.isChecked());
|
||||
using Priority = ClangdSettings::IndexingPriority;
|
||||
for (Priority prio : {Priority::Off, Priority::Background, Priority::Low, Priority::Normal}) {
|
||||
|
||||
@@ -4713,6 +4713,95 @@ void QuickfixTest::testInsertDefFromDeclTemplateFunction()
|
||||
QuickFixOperationTest(singleDocument(original, expected), &factory);
|
||||
}
|
||||
|
||||
void QuickfixTest::testInsertDefFromDeclFunctionWithSignedUnsignedArgument()
|
||||
{
|
||||
QByteArray original;
|
||||
QByteArray expected;
|
||||
InsertDefFromDecl factory;
|
||||
|
||||
original =R"--(
|
||||
class myclass
|
||||
{
|
||||
myc@lass(QVector<signed> g);
|
||||
myclass(QVector<unsigned> g);
|
||||
}
|
||||
)--";
|
||||
expected =R"--(
|
||||
class myclass
|
||||
{
|
||||
myclass(QVector<signed> g);
|
||||
myclass(QVector<unsigned> g);
|
||||
}
|
||||
|
||||
myclass::myclass(QVector<signed int> g)
|
||||
{
|
||||
|
||||
}
|
||||
)--";
|
||||
|
||||
QuickFixOperationTest(singleDocument(original, expected), &factory);
|
||||
|
||||
original =R"--(
|
||||
class myclass
|
||||
{
|
||||
myclass(QVector<signed> g);
|
||||
myc@lass(QVector<unsigned> g);
|
||||
}
|
||||
)--";
|
||||
expected =R"--(
|
||||
class myclass
|
||||
{
|
||||
myclass(QVector<signed> g);
|
||||
myclass(QVector<unsigned> g);
|
||||
}
|
||||
|
||||
myclass::myclass(QVector<unsigned int> g)
|
||||
{
|
||||
|
||||
}
|
||||
)--";
|
||||
|
||||
QuickFixOperationTest(singleDocument(original, expected), &factory);
|
||||
|
||||
original =R"--(
|
||||
class myclass
|
||||
{
|
||||
unsigned f@oo(unsigned);
|
||||
}
|
||||
)--";
|
||||
expected =R"--(
|
||||
class myclass
|
||||
{
|
||||
unsigned foo(unsigned);
|
||||
}
|
||||
|
||||
unsigned int myclass::foo(unsigned int)
|
||||
{
|
||||
|
||||
}
|
||||
)--";
|
||||
QuickFixOperationTest(singleDocument(original, expected), &factory);
|
||||
|
||||
original =R"--(
|
||||
class myclass
|
||||
{
|
||||
signed f@oo(signed);
|
||||
}
|
||||
)--";
|
||||
expected =R"--(
|
||||
class myclass
|
||||
{
|
||||
signed foo(signed);
|
||||
}
|
||||
|
||||
signed int myclass::foo(signed int)
|
||||
{
|
||||
|
||||
}
|
||||
)--";
|
||||
QuickFixOperationTest(singleDocument(original, expected), &factory);
|
||||
}
|
||||
|
||||
void QuickfixTest::testInsertDefFromDeclNotTriggeredForFriendFunc()
|
||||
{
|
||||
const QByteArray contents =
|
||||
|
||||
@@ -133,6 +133,7 @@ private slots:
|
||||
void testInsertDefFromDeclTemplateClass();
|
||||
void testInsertDefFromDeclTemplateClassWithValueParam();
|
||||
void testInsertDefFromDeclTemplateFunction();
|
||||
void testInsertDefFromDeclFunctionWithSignedUnsignedArgument();
|
||||
void testInsertDefFromDeclNotTriggeredForFriendFunc();
|
||||
void testInsertDefFromDeclMinimalFunctionParameterType();
|
||||
void testInsertDefFromDeclAliasTemplateAsReturnType();
|
||||
|
||||
@@ -114,7 +114,7 @@ void DebuggerItem::createId()
|
||||
m_id = QUuid::createUuid().toString();
|
||||
}
|
||||
|
||||
void DebuggerItem::reinitializeFromFile(const Environment &sysEnv, QString *error)
|
||||
void DebuggerItem::reinitializeFromFile(QString *error, Utils::Environment *customEnv)
|
||||
{
|
||||
// CDB only understands the single-dash -version, whereas GDB and LLDB are
|
||||
// happy with both -version and --version. So use the "working" -version
|
||||
@@ -137,7 +137,8 @@ void DebuggerItem::reinitializeFromFile(const Environment &sysEnv, QString *erro
|
||||
return;
|
||||
}
|
||||
|
||||
Environment env = sysEnv.isValid() ? sysEnv : Environment::systemEnvironment();
|
||||
Environment env = customEnv ? *customEnv : m_command.deviceEnvironment();
|
||||
|
||||
// Prevent calling lldb on Windows because the lldb from the llvm package is linked against
|
||||
// python but does not contain a python dll.
|
||||
const bool isAndroidNdkLldb = DebuggerItem::addAndroidLldbPythonEnv(m_command, env);
|
||||
@@ -186,18 +187,8 @@ void DebuggerItem::reinitializeFromFile(const Environment &sysEnv, QString *erro
|
||||
const bool unableToFindAVersion = (0 == version);
|
||||
const bool gdbSupportsConfigurationFlag = (version >= 70700);
|
||||
if (gdbSupportsConfigurationFlag || unableToFindAVersion) {
|
||||
|
||||
auto gdbConfiguration = [this, &output, &sysEnv]() {
|
||||
if (!output.contains("qnx"))
|
||||
return getGdbConfiguration(m_command, sysEnv);
|
||||
|
||||
Environment env = sysEnv;
|
||||
env.set("QNX_TARGET", QString());
|
||||
return getGdbConfiguration(m_command, env);
|
||||
};
|
||||
|
||||
const QString gdbTargetAbiString =
|
||||
extractGdbTargetAbiStringFromGdbOutput(gdbConfiguration());
|
||||
const QString gdbTargetAbiString = extractGdbTargetAbiStringFromGdbOutput(
|
||||
getGdbConfiguration(m_command, env));
|
||||
if (!gdbTargetAbiString.isEmpty()) {
|
||||
m_abis.append(Abi::abiFromTargetTriplet(gdbTargetAbiString));
|
||||
return;
|
||||
|
||||
@@ -76,8 +76,7 @@ public:
|
||||
bool operator==(const DebuggerItem &other) const;
|
||||
bool operator!=(const DebuggerItem &other) const { return !operator==(other); }
|
||||
|
||||
void reinitializeFromFile(const Utils::Environment &sysEnv = Utils::Environment::systemEnvironment(),
|
||||
QString *error = nullptr);
|
||||
void reinitializeFromFile(QString *error = nullptr, Utils::Environment *env = nullptr);
|
||||
|
||||
Utils::FilePath workingDirectory() const { return m_workingDirectory; }
|
||||
void setWorkingDirectory(const Utils::FilePath &workingPath) { m_workingDirectory = workingPath; }
|
||||
|
||||
@@ -296,7 +296,7 @@ DebuggerItemConfigWidget::DebuggerItemConfigWidget()
|
||||
DebuggerItem item;
|
||||
item.setCommand(m_binaryChooser->filePath());
|
||||
errorMessage->clear();
|
||||
item.reinitializeFromFile({}, errorMessage);
|
||||
item.reinitializeFromFile(errorMessage);
|
||||
return errorMessage->isEmpty();
|
||||
});
|
||||
m_binaryChooser->setAllowPathFromDevice(true);
|
||||
|
||||
@@ -112,7 +112,7 @@ void GdbMi::parseResultOrValue(DebuggerOutputParser &parser)
|
||||
}
|
||||
|
||||
// Reads one \ooo entity.
|
||||
static bool parseOctalEscapedHelper(DebuggerOutputParser &parser, QString &buffer)
|
||||
static bool parseOctalEscapedHelper(DebuggerOutputParser &parser, QByteArray &buffer)
|
||||
{
|
||||
if (parser.remainingChars() < 4)
|
||||
return false;
|
||||
@@ -130,7 +130,7 @@ static bool parseOctalEscapedHelper(DebuggerOutputParser &parser, QString &buffe
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool parseHexEscapedHelper(DebuggerOutputParser &parser, QString &buffer)
|
||||
static bool parseHexEscapedHelper(DebuggerOutputParser &parser, QByteArray &buffer)
|
||||
{
|
||||
if (parser.remainingChars() < 4)
|
||||
return false;
|
||||
@@ -178,16 +178,15 @@ static void parseSimpleEscape(DebuggerOutputParser &parser, QString &result)
|
||||
// *or* one escaped char, *or* one unescaped char.
|
||||
static void parseCharOrEscape(DebuggerOutputParser &parser, QString &result)
|
||||
{
|
||||
const int oldSize = result.size();
|
||||
while (parseOctalEscapedHelper(parser, result))
|
||||
QByteArray buffer;
|
||||
while (parseOctalEscapedHelper(parser, buffer))
|
||||
;
|
||||
while (parseHexEscapedHelper(parser, result))
|
||||
while (parseHexEscapedHelper(parser, buffer))
|
||||
;
|
||||
|
||||
if (result.size() != oldSize)
|
||||
return;
|
||||
|
||||
if (parser.isCurrent('\\')) {
|
||||
if (!buffer.isEmpty()) {
|
||||
result.append(QString::fromUtf8(buffer));
|
||||
} else if (parser.isCurrent('\\')) {
|
||||
parser.advance();
|
||||
parseSimpleEscape(parser, result);
|
||||
} else {
|
||||
|
||||
@@ -451,7 +451,8 @@ void DebuggerRunTool::start()
|
||||
}
|
||||
|
||||
// QML and/or mixed are not prepared for it.
|
||||
setSupportsReRunning(!m_runParameters.isQmlDebugging);
|
||||
// setSupportsReRunning(!m_runParameters.isQmlDebugging);
|
||||
setSupportsReRunning(false); // FIXME: Broken in general.
|
||||
|
||||
// FIXME: Disabled due to Android. Make Android device report available ports instead.
|
||||
// int portsUsed = portsUsedByDebugger();
|
||||
|
||||
@@ -1832,11 +1832,13 @@ void QmlEnginePrivate::messageReceived(const QByteArray &data)
|
||||
QList<Breakpoint> v8Breakpoints;
|
||||
|
||||
const QVariantList v8BreakpointIdList = breakData.value("breakpoints").toList();
|
||||
// skip debug break if no breakpoint and we have not done a single step as last
|
||||
// action - likely stopped in another file with same naming
|
||||
if (v8BreakpointIdList.isEmpty() && previousStepAction == Continue) {
|
||||
inferiorStop = false;
|
||||
continueDebugging(Continue);
|
||||
if (engine->state() != InferiorStopRequested) {
|
||||
// skip debug break if no breakpoint and we have not done a single step as
|
||||
// last action - likely stopped in another file with same naming
|
||||
if (v8BreakpointIdList.isEmpty() && previousStepAction == Continue) {
|
||||
inferiorStop = false;
|
||||
continueDebugging(Continue);
|
||||
}
|
||||
}
|
||||
|
||||
for (const QVariant &breakpointId : v8BreakpointIdList) {
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
#include "dockerconstants.h"
|
||||
#include "dockertr.h"
|
||||
#include "utils/hostosinfo.h"
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
@@ -22,10 +23,17 @@ DockerSettings::DockerSettings()
|
||||
setSettingsGroup(Constants::DOCKER);
|
||||
setAutoApply(false);
|
||||
|
||||
FilePaths additionalPaths;
|
||||
if (HostOsInfo::isWindowsHost())
|
||||
additionalPaths.append("C:/Program Files/Docker/Docker/resources/bin");
|
||||
else
|
||||
additionalPaths.append("/usr/local/bin");
|
||||
|
||||
registerAspect(&dockerBinaryPath);
|
||||
dockerBinaryPath.setDisplayStyle(StringAspect::PathChooserDisplay);
|
||||
dockerBinaryPath.setExpectedKind(PathChooser::ExistingCommand);
|
||||
dockerBinaryPath.setDefaultFilePath(FilePath::fromString("docker").searchInPath({"/usr/local/bin"}));
|
||||
dockerBinaryPath.setDefaultFilePath(
|
||||
FilePath::fromString("docker").searchInPath(additionalPaths));
|
||||
dockerBinaryPath.setDisplayName(Tr::tr("Docker CLI"));
|
||||
dockerBinaryPath.setHistoryCompleter("Docker.Command.History");
|
||||
dockerBinaryPath.setLabelText(Tr::tr("Command:"));
|
||||
|
||||
@@ -259,10 +259,13 @@ public:
|
||||
ProjectExplorer::Constants::CXX_LANGUAGE_ID);
|
||||
|
||||
if (cToolchain && cxxToolchain) {
|
||||
configMap.insert("CMAKE_CXX_COMPILER",
|
||||
cxxToolchain->compilerCommand().toString().toLatin1());
|
||||
configMap.insert("CMAKE_C_COMPILER",
|
||||
cToolchain->compilerCommand().toString().toLatin1());
|
||||
if (!cxxToolchain->compilerCommand().isEmpty()
|
||||
&& !cToolchain->compilerCommand().isEmpty()) {
|
||||
configMap.insert("CMAKE_CXX_COMPILER",
|
||||
cxxToolchain->compilerCommand().toString().toLatin1());
|
||||
configMap.insert("CMAKE_C_COMPILER",
|
||||
cToolchain->compilerCommand().toString().toLatin1());
|
||||
}
|
||||
} else {
|
||||
printMessage(Tr::tr("Warning for target %1: invalid toolchain path (%2). "
|
||||
"Update the toolchain in Edit > Preferences > Kits.")
|
||||
@@ -527,6 +530,8 @@ void createAutomaticKits(const SettingsHandler::Ptr &settingsHandler)
|
||||
}
|
||||
|
||||
McuSdkRepository repo{targetsAndPackages(qtForMCUsPackage, settingsHandler)};
|
||||
McuSdkRepository::updateQtDirMacro(qtForMCUsPackage->path());
|
||||
repo.expandVariablesAndWildcards();
|
||||
|
||||
bool needsUpgrade = false;
|
||||
for (const auto &target : std::as_const(repo.mcuTargets)) {
|
||||
|
||||
@@ -77,6 +77,15 @@ Macros *McuSdkRepository::globalMacros()
|
||||
return ¯os;
|
||||
}
|
||||
|
||||
void McuSdkRepository::updateQtDirMacro(const FilePath &qulDir)
|
||||
{
|
||||
// register the Qt installation directory containing Qul dir
|
||||
auto qtPath = (qulDir / "../..").cleanPath();
|
||||
if (qtPath.exists()) {
|
||||
globalMacros()->insert("QtDir", [qtPathString = qtPath.path()] { return qtPathString; });
|
||||
}
|
||||
}
|
||||
|
||||
void McuSdkRepository::expandVariablesAndWildcards()
|
||||
{
|
||||
for (const auto &target : std::as_const(mcuTargets)) {
|
||||
@@ -198,13 +207,7 @@ bool McuSupportOptions::isLegacyVersion(const QVersionNumber &version)
|
||||
|
||||
void McuSupportOptions::setQulDir(const FilePath &path)
|
||||
{
|
||||
//register the Qt installation directory containing Qul dir
|
||||
auto qtPath = (path / "../..").cleanPath();
|
||||
if (qtPath.exists()) {
|
||||
McuSdkRepository::globalMacros()->insert("QtDir", [qtPathString = qtPath.path()] {
|
||||
return qtPathString;
|
||||
});
|
||||
}
|
||||
McuSdkRepository::updateQtDirMacro(path);
|
||||
qtForMCUsSdkPackage->updateStatus();
|
||||
if (qtForMCUsSdkPackage->isValidStatus())
|
||||
sdkRepository = targetsAndPackages(qtForMCUsSdkPackage, settingsHandler);
|
||||
|
||||
@@ -40,6 +40,7 @@ public:
|
||||
Targets mcuTargets;
|
||||
Packages packages;
|
||||
|
||||
static void updateQtDirMacro(const Utils::FilePath &qulDir);
|
||||
void expandVariablesAndWildcards();
|
||||
MacroExpanderPtr getMacroExpander(const McuTarget &target);
|
||||
|
||||
|
||||
@@ -247,6 +247,15 @@ void McuSupportOptionsWidget::updateStatus()
|
||||
}
|
||||
}
|
||||
|
||||
struct McuPackageSort {
|
||||
bool operator()(McuPackagePtr a, McuPackagePtr b) const {
|
||||
if (a->cmakeVariableName() != b->cmakeVariableName())
|
||||
return a->cmakeVariableName() > b->cmakeVariableName();
|
||||
else
|
||||
return a->environmentVariableName() > b->environmentVariableName();
|
||||
}
|
||||
};
|
||||
|
||||
void McuSupportOptionsWidget::showMcuTargetPackages()
|
||||
{
|
||||
McuTargetPtr mcuTarget = currentMcuTarget();
|
||||
@@ -257,9 +266,15 @@ void McuSupportOptionsWidget::showMcuTargetPackages()
|
||||
m_packagesLayout->removeRow(0);
|
||||
}
|
||||
|
||||
std::set<McuPackagePtr, McuPackageSort> packages;
|
||||
|
||||
for (const auto &package : mcuTarget->packages()) {
|
||||
if (package->label().isEmpty())
|
||||
continue;
|
||||
packages.insert(package);
|
||||
}
|
||||
|
||||
for (const auto &package : packages) {
|
||||
QWidget *packageWidget = package->widget();
|
||||
m_packagesLayout->addRow(package->label(), packageWidget);
|
||||
packageWidget->show();
|
||||
|
||||
@@ -50,9 +50,14 @@ McuPackageVersionDetector *createVersionDetection(const VersionDetection &versio
|
||||
|
||||
static void removeEmptyPackages(Packages &packages)
|
||||
{
|
||||
for (const McuPackagePtr &pkg : packages) {
|
||||
if (pkg->cmakeVariableName().isEmpty() && pkg->path().isEmpty())
|
||||
packages.remove(pkg);
|
||||
Packages::const_iterator it = packages.constBegin();
|
||||
while (it != packages.constEnd()) {
|
||||
const auto &pkg = *it;
|
||||
if (pkg->cmakeVariableName().isEmpty() && pkg->path().isEmpty()) {
|
||||
it = packages.erase(it);
|
||||
} else {
|
||||
++it;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -115,6 +115,8 @@ public:
|
||||
reportFailure(msg);
|
||||
return;
|
||||
}
|
||||
if (!m_process->cleanedStdErr().isEmpty())
|
||||
appendMessage(m_process->cleanedStdErr(), Utils::StdErrFormat);
|
||||
reportStopped();
|
||||
});
|
||||
|
||||
@@ -124,6 +126,8 @@ public:
|
||||
cmd.addCommandLineAsArgs(runControl()->commandLine(), CommandLine::Raw);
|
||||
|
||||
m_process->setCommand(cmd);
|
||||
m_process->setWorkingDirectory(runControl()->workingDirectory());
|
||||
appendMessage("Starting Perf: " + cmd.toUserOutput(), Utils::NormalMessageFormat);
|
||||
m_process->start();
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ BuildDirectoryAspect::BuildDirectoryAspect(const BuildConfiguration *bc)
|
||||
edit->setText(fixedDir.toUserOutput());
|
||||
|
||||
const FilePath newPath = FilePath::fromUserInput(edit->text());
|
||||
const auto buildDevice = DeviceKitAspect::device(d->target->kit());
|
||||
const auto buildDevice = BuildDeviceKitAspect::device(d->target->kit());
|
||||
|
||||
if (buildDevice && buildDevice->type() != ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE
|
||||
&& !buildDevice->rootPath().ensureReachable(newPath)) {
|
||||
|
||||
@@ -486,7 +486,7 @@ void BuildManager::updateTaskCount()
|
||||
{
|
||||
const int errors = getErrorTaskCount();
|
||||
ProgressManager::setApplicationLabel(errors > 0 ? QString::number(errors) : QString());
|
||||
if (errors > 0 && !d->m_poppedUpTaskWindow) {
|
||||
if (isBuilding() && errors > 0 && !d->m_poppedUpTaskWindow) {
|
||||
showTaskWindow();
|
||||
d->m_poppedUpTaskWindow = true;
|
||||
}
|
||||
|
||||
@@ -150,4 +150,11 @@ Environment DesktopDevice::systemEnvironment() const
|
||||
return Environment::systemEnvironment();
|
||||
}
|
||||
|
||||
FilePath DesktopDevice::rootPath() const
|
||||
{
|
||||
if (id() == DESKTOP_DEVICE_ID)
|
||||
return FilePath::fromParts({}, {}, QDir::rootPath());
|
||||
return IDevice::rootPath();
|
||||
}
|
||||
|
||||
} // namespace ProjectExplorer
|
||||
|
||||
@@ -36,6 +36,8 @@ public:
|
||||
Utils::Environment systemEnvironment() const override;
|
||||
Utils::FilePath mapToGlobalPath(const Utils::FilePath &pathOnDevice) const override;
|
||||
|
||||
Utils::FilePath rootPath() const override;
|
||||
|
||||
protected:
|
||||
DesktopDevice();
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user