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