forked from qt-creator/qt-creator
Merge remote-tracking branch 'origin/16.0' into qds/dev
Change-Id: I7a79ed9b966e49395550283b7b8e083cc9dd43b3
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
set(IDE_VERSION "16.0.0") # The IDE version.
|
||||
set(IDE_VERSION "16.0.1") # The IDE version.
|
||||
set(IDE_VERSION_COMPAT "16.0.0") # The IDE Compatibility version.
|
||||
set(IDE_VERSION_DISPLAY "16.0.0") # The IDE display version.
|
||||
set(IDE_VERSION_DISPLAY "16.0.1") # The IDE display version.
|
||||
|
||||
set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation.
|
||||
set(IDE_DISPLAY_NAME "Qt Creator") # The IDE display name.
|
||||
|
@@ -240,7 +240,7 @@
|
||||
\li \uicontrol {Use CDB console}
|
||||
\li If a console application does not start up properly in the configured
|
||||
console and the subsequent attach fails, diagnose the issue by
|
||||
using CDB's native console. Select this checkbox to override the
|
||||
using the native CDB console. Select this checkbox to override the
|
||||
console set in the Windows system environment variables. Note that
|
||||
the native console does not prompt on application exit.
|
||||
\row
|
||||
|
@@ -282,7 +282,7 @@
|
||||
|
||||
If a console application does not start up properly in the configured
|
||||
console and the subsequent attach fails, you can diagnose the issue by
|
||||
using CDB's native console. Go to \preferences >
|
||||
using the native CDB console. Go to \preferences >
|
||||
\uicontrol Debugger > \uicontrol CDB > \uicontrol {Use CDB console} to
|
||||
override the console set in the Windows system environment variables.
|
||||
Note that the native console does not prompt on application exit.
|
||||
|
@@ -461,7 +461,7 @@
|
||||
\inlineimage icons/refactormarker.png
|
||||
\row
|
||||
\li Convert Function Call to Qt Meta-Method Invocation
|
||||
\li Converts an invokable function call into a meta method
|
||||
\li Converts an invocable function call into a meta method
|
||||
invocation. This applies to signals and slots in general,
|
||||
as well as functions explicitly marked with \c Q_INVOKABLE.
|
||||
For example, for the following class:
|
||||
@@ -499,7 +499,7 @@
|
||||
}
|
||||
\endcode
|
||||
|
||||
The quick fix also works on invokable methods outside the class that are
|
||||
The quick fix also works on invocable methods outside the class that are
|
||||
visible from the location where they are called from. For example, it
|
||||
rewrites
|
||||
|
||||
|
@@ -20,8 +20,7 @@
|
||||
|
||||
\note Since \QDS 2.3.0, \QDS project wizard templates generate projects that
|
||||
can be built with CMake. You can open the \e CMakeLists.txt project file in
|
||||
Qt Creator to continue developing the project. Also, you can use Qt Creator
|
||||
to create a Qt Quick Application project that you can open in \QDS.
|
||||
Qt Creator to continue developing the project.
|
||||
|
||||
\target wizard-template-note
|
||||
\note Since \QDS 3.9.0, \QDS project wizard templates generate projects that
|
||||
@@ -54,12 +53,12 @@
|
||||
show the main QML file when the application starts.
|
||||
|
||||
\if defined(qtcreator)
|
||||
The \e {Qt Quick Designer Components} module is installed when you
|
||||
The \e {Qt Quick Studio Components} module is installed when you
|
||||
install \QDS. If you use Qt Quick Studio Components or Effects
|
||||
from the module in a project that you want to edit in Qt Creator,
|
||||
you have to build the module and install it to your Qt to be able to
|
||||
build your project. For more information, see
|
||||
\l{Adding Qt Quick Designer Components to Qt Installations}.
|
||||
\l{Adding Qt Quick Studio Components to Qt Installations}.
|
||||
|
||||
The \l{Qt Quick Timeline} module is installed when you install \QDS.
|
||||
If you only install Qt Creator and Qt, remember to also select the
|
||||
@@ -110,7 +109,7 @@
|
||||
project.
|
||||
|
||||
\note If you get error messages related to modules, perfom the steps
|
||||
described in \l{Adding Qt Quick Designer Components to Qt Installations}.
|
||||
described in \l{Adding Qt Quick Studio Components to Qt Installations}.
|
||||
\endlist
|
||||
|
||||
For example, if you copy the source files of the \e ProgressBar
|
||||
@@ -142,7 +141,7 @@
|
||||
using the Qt resource system dynamically. For more information, see
|
||||
\l{The Qt Resource System}.
|
||||
|
||||
\section1 Adding Qt Quick Designer Components to Qt Installations
|
||||
\section1 Adding Qt Quick Studio Components to Qt Installations
|
||||
|
||||
Since \QDS 3.9, the Qt Quick Studio Components module is installed by default
|
||||
as part of the application created with \QDS. You can also install the module manually.
|
||||
@@ -154,7 +153,7 @@
|
||||
git clone https://code.qt.io/qt-labs/qtquickdesigner-components.git
|
||||
\endcode
|
||||
|
||||
\li Install the Qt Quick Designer Components module.
|
||||
\li Install the Qt Quick Studio Components module.
|
||||
|
||||
\badcode
|
||||
mkdir build
|
||||
|
@@ -369,7 +369,7 @@
|
||||
\li \l {git branch}
|
||||
\row
|
||||
\li \uicontrol {Copy <hash>}
|
||||
\li Copy the commit's <hash> to the clipboard.
|
||||
\li Copy the commit <hash> to the clipboard.
|
||||
\li
|
||||
\row
|
||||
\li \uicontrol {Describe Change <hash>}
|
||||
@@ -1005,7 +1005,7 @@
|
||||
|
||||
In the \uicontrol {Git Branches} view, right-click a remote branch, and
|
||||
then select a merge option in the context menu. If the commit you are merging
|
||||
can be reached by following the first commit's history, there is no divergent
|
||||
can be reached by following the history of the first commit, there is no divergent
|
||||
work to merge together. To allow Git to move the branch pointer forward,
|
||||
select \uicontrol {Merge <remote branch> into <local branch> (Fast-Forward)}.
|
||||
If you do not want to fast-forward the branch, select
|
||||
|
@@ -4,10 +4,10 @@ import qbs.FileInfo
|
||||
import qbs.Utilities
|
||||
|
||||
Module {
|
||||
property string qtcreator_display_version: '16.0.0'
|
||||
property string qtcreator_display_version: '16.0.1'
|
||||
property string ide_version_major: '16'
|
||||
property string ide_version_minor: '0'
|
||||
property string ide_version_release: '0'
|
||||
property string ide_version_release: '1'
|
||||
property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.'
|
||||
+ ide_version_release
|
||||
|
||||
|
@@ -130,7 +130,7 @@ class Dumper(DumperBase):
|
||||
val.typeid = self.from_native_type(nativeValue.type())
|
||||
val.nativeValue = nativeValue
|
||||
val.laddress = nativeValue.address()
|
||||
val.lbitsize = nativeValue.bitsize()
|
||||
val.size = nativeValue.bitsize()
|
||||
return val
|
||||
|
||||
def nativeTypeId(self, nativeType: cdbext.Type) -> str:
|
||||
|
@@ -3004,6 +3004,8 @@ typename))
|
||||
return
|
||||
|
||||
self.putAddress(value.address())
|
||||
if value.size is not None:
|
||||
self.putField('size', value.size // 8)
|
||||
|
||||
if typecode == TypeCode.Function:
|
||||
#self.warn('FUNCTION VALUE: %s' % value)
|
||||
|
@@ -276,6 +276,7 @@ class Dumper(DumperBase):
|
||||
val.typeid = typeid
|
||||
#elif code == gdb.TYPE_CODE_ARRAY:
|
||||
# val.type.ltarget = nativeValue[0].type.unqualified()
|
||||
val.size = nativeType.sizeof * 8
|
||||
return val
|
||||
|
||||
def nativeDataFromValueFallback(self, nativeValue, size):
|
||||
|
@@ -207,6 +207,7 @@ class Dumper(DumperBase):
|
||||
val.summary = summary
|
||||
val.lIsInScope = nativeValue.IsInScope()
|
||||
val.name = nativeValue.GetName()
|
||||
val.size = nativeType.GetByteSize() * 8
|
||||
return val
|
||||
|
||||
def nativeListMembers(self, value, nativeType, include_base):
|
||||
|
@@ -1134,6 +1134,11 @@ void MarkdownBrowser::setEnableCodeCopyButton(bool enable)
|
||||
access(this)->setEnableCodeCopyButton(enable);
|
||||
}
|
||||
|
||||
void MarkdownBrowser::setViewportMargins(int left, int top, int right, int bottom)
|
||||
{
|
||||
access(this)->setMargins(QMargins(left, top, right, bottom));
|
||||
}
|
||||
|
||||
// Special If
|
||||
|
||||
If::If(
|
||||
|
@@ -460,6 +460,7 @@ public:
|
||||
void setMarkdown(const QString &);
|
||||
void setBasePath(const Utils::FilePath &);
|
||||
void setEnableCodeCopyButton(bool enable);
|
||||
void setViewportMargins(int left, int top, int right, int bottom);
|
||||
};
|
||||
|
||||
// Special
|
||||
|
@@ -69,7 +69,7 @@ Suggested NDK and Debugger version per Qt version:
|
||||
| 5.15.9 - 5.15.16 | 6.2 - 6.3 | 22.1.7171670 | 8.3.0 | 11.0.5 |
|
||||
| | 6.4 | 23.1.7779620 | 8.3.0 | 12.0.8 |
|
||||
| | 6.5 - 6.6 | 25.1.8937393 | | 14.0.6 |
|
||||
| | 6.7 - 6.8 | 26.1.10909125 | | 17.0.2 |
|
||||
| | 6.7 - 6.9 | 26.1.10909125 | | 17.0.2 |
|
||||
|
||||
< Qt 6.5: Mapping read from sdk_definitions.json
|
||||
>= Qt 6.5: Mapping read from <QtDir>/modules/Core.json
|
||||
|
@@ -12,6 +12,7 @@
|
||||
#include <coreplugin/findplaceholder.h>
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
#include <utils/stylehelper.h>
|
||||
#include <utils/utilsicons.h>
|
||||
|
||||
#include <QAction>
|
||||
@@ -119,6 +120,7 @@ Console::Console()
|
||||
m_spacer->setMinimumWidth(30);
|
||||
|
||||
m_statusLabel = new QLabel(m_consoleWidget);
|
||||
StyleHelper::setPanelWidget(m_statusLabel);
|
||||
|
||||
readSettings();
|
||||
connect(Core::ICore::instance(), &Core::ICore::saveSettingsRequested,
|
||||
|
@@ -14,6 +14,7 @@
|
||||
#include <coreplugin/modemanager.h>
|
||||
|
||||
#include <utils/basetreeview.h>
|
||||
#include <utils/stylehelper.h>
|
||||
#include <utils/treemodel.h>
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
@@ -138,6 +139,7 @@ public:
|
||||
{
|
||||
m_proxyModel->setSourceModel(sourceModel);
|
||||
|
||||
StyleHelper::setPanelWidget(m_engineChooser);
|
||||
m_engineChooser->setModel(m_proxyModel);
|
||||
m_engineChooser->setIconSize(QSize(0, 0));
|
||||
if (hideSwitcherUnlessNeeded)
|
||||
|
@@ -1228,6 +1228,7 @@ void QmlEnginePrivate::handleEvaluateExpression(const QVariantMap &response,
|
||||
QVariant bodyVal = response.value(BODY).toMap();
|
||||
QmlV8ObjectData body = extractData(bodyVal);
|
||||
WatchHandler *watchHandler = engine->watchHandler();
|
||||
watchHandler->resetValueCache();
|
||||
|
||||
auto item = new WatchItem;
|
||||
item->iname = iname;
|
||||
|
@@ -36,6 +36,11 @@ enum {
|
||||
};
|
||||
}
|
||||
|
||||
static bool sorter(const TreeItem *a, const TreeItem *b)
|
||||
{
|
||||
return a->data(0, Qt::DisplayRole).toString() < b->data(0, Qt::DisplayRole).toString();
|
||||
}
|
||||
|
||||
template<class Item, class Params, class Request, class Result>
|
||||
class HierarchyItem : public TreeItem
|
||||
{
|
||||
@@ -102,7 +107,7 @@ private:
|
||||
if (result && !result->isNull()) {
|
||||
for (const Result &item : result->toList()) {
|
||||
if (item.isValid())
|
||||
appendChild(new HierarchyItem(getSourceItem(item), m_client));
|
||||
insertOrderedChild(new HierarchyItem(getSourceItem(item), m_client), sorter);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@@ -115,6 +115,7 @@ CREATE_HAS_FUNC(setFixedSize, QSize())
|
||||
CREATE_HAS_FUNC(setVisible, bool())
|
||||
CREATE_HAS_FUNC(setIcon, Utils::Icon());
|
||||
CREATE_HAS_FUNC(setContentsMargins, int(), int(), int(), int());
|
||||
CREATE_HAS_FUNC(setViewportMargins, int(), int(), int(), int());
|
||||
CREATE_HAS_FUNC(setCursor, Qt::CursorShape())
|
||||
CREATE_HAS_FUNC(setMinimumWidth, int());
|
||||
CREATE_HAS_FUNC(setEnableCodeCopyButton, bool());
|
||||
@@ -128,6 +129,12 @@ void setProperties(std::unique_ptr<T> &item, const sol::table &children, QObject
|
||||
item->setContentsMargins(margins->left(), margins->top(), margins->right(), margins->bottom());
|
||||
}
|
||||
|
||||
if constexpr (has_setViewportMargins<T>) {
|
||||
sol::optional<QMargins> margins = children.get<sol::optional<QMargins>>("viewportMargins"sv);
|
||||
if (margins)
|
||||
item->setViewportMargins(margins->left(), margins->top(), margins->right(), margins->bottom());
|
||||
}
|
||||
|
||||
if constexpr (has_setCursor<T>) {
|
||||
const auto cursor = children.get<sol::optional<Qt::CursorShape>>("cursor"sv);
|
||||
if (cursor)
|
||||
|
@@ -232,6 +232,7 @@ local markdownBrowser = {}
|
||||
|
||||
---@class (exact) MarkdownBrowserOptions : WidgetOptions
|
||||
---@field enableCodeCopyButton? boolean Enable or disable the code copy button
|
||||
---@field viewportMargins? integer[] Four integers representing left, top, right and bottom margins
|
||||
local markdownBrowserOptions = {}
|
||||
|
||||
---@param options MarkdownBrowserOptions
|
||||
|
@@ -594,7 +594,7 @@ void RunControlPrivate::startPortsGathererIfNeededAndContinueStart()
|
||||
return;
|
||||
}
|
||||
|
||||
QTC_ASSERT(device, continueStart(); return);
|
||||
QTC_ASSERT(device, initiateStop(); return);
|
||||
|
||||
const Storage<PortsOutputData> portsStorage;
|
||||
|
||||
|
@@ -78,6 +78,7 @@ private:
|
||||
QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id)
|
||||
: RunConfiguration(target, id)
|
||||
{
|
||||
setUsesEmptyBuildKeys();
|
||||
qmlViewer.setSettingsKey(Constants::QML_VIEWER_KEY);
|
||||
qmlViewer.setLabelText(Tr::tr("Override device QML viewer:"));
|
||||
qmlViewer.setPlaceHolderText(qmlRuntimeFilePath().toUserOutput());
|
||||
|
@@ -156,10 +156,7 @@ GroupItem GenericDeployStep::transferTask(const Storage<FilesToTransfer> &storag
|
||||
.arg(FileTransfer::transferMethodName(preferredTransferMethod),
|
||||
FileTransfer::transferMethodName(transferMethod),
|
||||
deviceConfiguration()->displayName());
|
||||
if (transferMethod == FileTransferMethod::GenericCopy)
|
||||
addWarningMessage(message);
|
||||
else
|
||||
addProgressMessage(message);
|
||||
addProgressMessage(message);
|
||||
m_emittedDowngradeWarning = true;
|
||||
}
|
||||
transfer.setTransferMethod(transferMethod);
|
||||
|
@@ -137,18 +137,6 @@ bool CropSizeWarningIcon::needsWarning() const
|
||||
|
||||
namespace FFmpegUtils {
|
||||
|
||||
static QVersionNumber parseVersionNumber(const QByteArray &toolOutput)
|
||||
{
|
||||
QVersionNumber result;
|
||||
const QJsonObject jsonObject = QJsonDocument::fromJson(toolOutput).object();
|
||||
if (const QJsonObject program_version = jsonObject.value("program_version").toObject();
|
||||
!program_version.isEmpty()) {
|
||||
if (const QJsonValue version = program_version.value("version"); !version.isUndefined())
|
||||
result = QVersionNumber::fromString(version.toString());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
static ClipInfo parseClipInfo(const QByteArray &toolOutput)
|
||||
{
|
||||
ClipInfo result;
|
||||
@@ -248,6 +236,18 @@ using namespace ScreenRecorder::FFmpegUtils;
|
||||
|
||||
namespace ScreenRecorder::Internal {
|
||||
|
||||
static QVersionNumber parseVersionNumber(const QByteArray &toolOutput)
|
||||
{
|
||||
QVersionNumber result;
|
||||
const QJsonObject jsonObject = QJsonDocument::fromJson(toolOutput).object();
|
||||
if (const QJsonObject program_version = jsonObject.value("program_version").toObject();
|
||||
!program_version.isEmpty()) {
|
||||
if (const QJsonValue version = program_version.value("version"); !version.isUndefined())
|
||||
result = QVersionNumber::fromString(version.toString());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void FFmpegOutputParserTest::testVersionParser_data()
|
||||
{
|
||||
QTest::addColumn<QByteArray>("ffprobeVersionOutput");
|
||||
|
@@ -1,6 +1,49 @@
|
||||
# Testing Boot2Qt with the Hardware Pool
|
||||
|
||||
## Installing the Requirements
|
||||
|
||||
### Testing Boot2Qt setup without hardware ###
|
||||
On macOS, you need to have Docker Desktop installed, including the Docker CLI.
|
||||
|
||||
Install the Boot to Qt Software Stack for the Qt version and device hardware
|
||||
that you want to test with the Qt Online Installer
|
||||
|
||||
On macOS, the installer might complain about not being able to run docker.
|
||||
If that is the case, copy the command line from the dialog into a Terminal
|
||||
with the Docker CLI in PATH and execute it manually. Choose `Ignore` in the
|
||||
installer dialog when ready.
|
||||
|
||||
## Reserving a Device
|
||||
|
||||
Log into https://hw-controller.qt.io/ with your Qt Account. Choose the
|
||||
appropriate device hardware, select the Qt version that matches what you
|
||||
installed with the Qt Online Installer, state a reason for your device use,
|
||||
choose a reservation duration, and select `Reserve`.
|
||||
|
||||
The device is then provisioned and booted. When ready, make note of the device
|
||||
IP address.
|
||||
|
||||
## Configuring Qt Creator
|
||||
|
||||
Start Qt Creator, open the device options, and add a `Boot to Qt Device`.
|
||||
Give it a name, and provide the IP that you noted when reserving the device.
|
||||
The user is `root`.
|
||||
|
||||
Now you can open or create a project, select the corresponding Boot to Qt kit,
|
||||
and build, run & debug.
|
||||
|
||||
While an application is running on the device, you can use a VNC[^vnc] viewer to
|
||||
connect to the apps UI with the device's IP.
|
||||
|
||||
[^vnc]: The creation of the VNC connection depends on setting
|
||||
`QT_QPA_PLATFORM=vnc` in `/etc/default/qt` on the device. That should
|
||||
be enabled by default for devices created with the web interface.
|
||||
|
||||
## Releasing the Device
|
||||
|
||||
When you are finished with testing, release the reservation of the device
|
||||
in the web interface.
|
||||
|
||||
# Testing Boot2Qt setup without hardware ###
|
||||
|
||||
It is possible to test Boot2Qt without hardware on a plain Linux host system.
|
||||
|
||||
@@ -8,12 +51,12 @@ Note: You need an ssh-accessible "root" user on the machine, open X access,
|
||||
and must be willing to use it. This is not meant for production environments!
|
||||
|
||||
|
||||
# Prepare your machine
|
||||
## Prepare your machine
|
||||
|
||||
ssh-copy-id -i ~/.ssh/id_??????.pub root@localhost
|
||||
xhost +
|
||||
|
||||
# Get appcontroller source and build
|
||||
## Get appcontroller source and build
|
||||
|
||||
git clone ssh://codereview.qt-project.org/qt-apps/boot2qt-appcontroller
|
||||
|
||||
@@ -21,12 +64,12 @@ cd boot2qt-appcontroller
|
||||
/path/to/qt-base/bin/qt-cmake ...
|
||||
ninja ...
|
||||
|
||||
# Copy binary to "proper" location
|
||||
## Copy binary to "proper" location
|
||||
|
||||
sudo ln -s `pwd`/appcontroller /usr/bin/appcontroller
|
||||
|
||||
|
||||
# Set up "Boot to Qt" Device in Creator
|
||||
## Set up "Boot to Qt" Device in Creator
|
||||
|
||||
Ensure the "Boot to Qt" plugin is enabled
|
||||
|
||||
@@ -36,7 +79,7 @@ Device Address: 127.0.0.1
|
||||
|
||||
Press "Apply"
|
||||
|
||||
# Create a suitable Kit
|
||||
## Create a suitable Kit
|
||||
|
||||
Clone your standard kit for normal local work
|
||||
Change the "Run Device" to LocalHostForBoot2Qt
|
||||
@@ -46,11 +89,11 @@ Press "Apply"
|
||||
|
||||
The kit will have a warning the "Device type is not supported by Qt version" - that's ok.
|
||||
|
||||
# Create a test project
|
||||
## Create a test project
|
||||
|
||||
File -> New Project -> Qt Quick Application
|
||||
|
||||
# Tweak project settings
|
||||
## Tweak project settings
|
||||
|
||||
Deployment method: "Deploy to Boot to Qt Target"
|
||||
|
||||
@@ -60,12 +103,12 @@ Run Environment: Add LD_LIBRARY_PATH=/path/to/qt-base/lib
|
||||
"Executable on Device" may be red at that stage, it shold get black after a successful build
|
||||
|
||||
|
||||
# Build
|
||||
## Build
|
||||
|
||||
Ctrl-B
|
||||
|
||||
|
||||
# Test
|
||||
## Test
|
||||
|
||||
At that stage, the program should be runnable, debuggable (C++, QML, and combined QML/C++),
|
||||
and Qml-Profilable
|
||||
|
57
tests/manual/qnx/README.md
Normal file
57
tests/manual/qnx/README.md
Normal file
@@ -0,0 +1,57 @@
|
||||
### Testing QNX setup without hardware ###
|
||||
|
||||
It is possible to test QNX without hardware on a plain Linux host system.
|
||||
|
||||
Note: This doc assumes you have:
|
||||
1.1 An access to actual qnx target device available via IP address that has Qt installed.
|
||||
1.2 A QNX SDP
|
||||
1.3 A QNX license (placed under: $HOME/.qnx/license/licenses).
|
||||
|
||||
# Installations
|
||||
|
||||
2.1 Unpack qnx710-windows-linux-20240417.tar.xz in ~/qnx folder.
|
||||
2.2 Install 'chrpath' on your linux host.
|
||||
2.3 Install locally Qt for QNX via Qt installer / maintenance tool.
|
||||
Install matching version of the one that is on the remote device.
|
||||
Point Qt installer to ~/qnx/qnx710-windows-linux-20240417/qnx710 for the SDP dir.
|
||||
2.4 Ensure you have cmake 3.21.1 at minimum installed on your host.
|
||||
|
||||
# Creator configuration
|
||||
|
||||
3.1 Ensure your installed Qt for QNX are detected:
|
||||
Preferences | Kits | Qt Versions should list installed versions.
|
||||
Preferences | Kits | Kits should list installed kits (won't be used!).
|
||||
If not, try: Preferences | Kits | Qt Versions | Link with Qt...
|
||||
and point to the installed Qt for QNX master dir.
|
||||
3.2 Create QNX device, pointing to the IP address from 1.1:
|
||||
Preferences | Devices | Add | QNX Device
|
||||
3.3 Run device Test - it should already pass.
|
||||
3.4 Ensure the right "Access via" value for the created QNX device:
|
||||
it should be: Direct (not Local PC).
|
||||
3.4 Add QNX SDK:
|
||||
Preferences | SDKs | QNX | Add...
|
||||
Point into ~/qnx/qnx710-windows-linux-20240417/qnx710/qnxsdp-env.sh
|
||||
This should fill the QNX page with content and you should see 3 new buttons:
|
||||
Create Kit for aarch64le, Create Kit for x86_64 and Create Kit for armle-v7.
|
||||
3.5 Create a kit: press one of the buttons from the previous point.
|
||||
Ensure it matches the architecture of the remote device.
|
||||
You won't see any feedback, but when you switch to the Kits | Kits tab,
|
||||
you should see a new kit created.
|
||||
3.6 It might happen that the created kit doesn't have matching
|
||||
compiler/debugger/Qt version selected. Ensure they have something like:
|
||||
Compiler: QCC for x86_64 - qnx7 (64-bit ARM)
|
||||
Debugger: Debugger for QNX 7.1.0 ARMv8
|
||||
Qt version: Qt 6.8.2 for QNX 7.1 ARMv8
|
||||
|
||||
# Create a qnx project
|
||||
|
||||
4.1 Try creating a new project:
|
||||
File | New Project... | Application (Qt) | Qt Console Application
|
||||
and select the Kit created in point 3.5
|
||||
4.2 Go to project run settings and fill up the "Alternate executable on device:" field.
|
||||
Check "Use this command instead" on the right side first to enable the line.
|
||||
Fill it with "/tmp/bin/[your_target_name]" by typing.
|
||||
This should match the table in the "Deployment" section above.
|
||||
Don't worry that it stays red, indicating it's not an existing path.
|
||||
4.3 The project should build, deploy and run on remote now.
|
||||
|
Reference in New Issue
Block a user