Я пытаюсь получить QML/C ++ приложение, упакованное как снимок. Я использую CMake в качестве системы сборки. Приложение создает прекрасный, и я могу выполнить исполняемый файл путем двойного щелчка по нему. При попытке выполнить его из QtCreator (Ubuntu SDK) я получаю следующую ошибку:
This application failed to start because it could not find or load the Qt platform plugin "xcb".
Reinstalling the application may fix this problem.
Aborted (core dumped)
Та же ошибка присутствует при попытке запустить приложение от поспешного пакета.
При попытке создать и запустить приложение с QtCreator 4.0.2 (вручную загруженный и установленный) с той же спокойной версией (5.5.1, который шел с Ubuntu 16.04), выполнение приложения без любых проблем.
Все тесты были сделаны на Ubuntu 16.04, полностью актуальной с человечностью-sdk ppa добавленный.
ОБНОВЛЕНИЕ: Протестированный на новом VM с Ubuntu 16.04 в надеждах, которая является, была просто проблема среды, и проблема все еще воспроизводит
Похож на Ваших пропавших без вести libqt5gui5 от Ваших пакетов этапа
ОБНОВЛЕНИЕ:
Так для расширения моего ответа немного больше. Вот простой рабочий пример, чтобы привязать CMake/Qt/QML приложение и сделать его выполнимым из qtcreator
// main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/qml/main.qml")));
return app.exec();
}
//main.qml
import QtQuick 2.4
import QtQuick.Window 2.1
import Ubuntu.Components 1.3
Window {
minimumHeight: units.gu(80)
minimumWidth: minimumHeight
MainView {
applicationName: "simpleapp"
anchors.fill: parent
Page {
title: "Hello world"
Button {
anchors.centerIn: parent
text: "Quit"
onClicked: Qt.quit()
}
}
}
Component.onCompleted: show()
}
#CMakeLists.txt
project(simpleapp)
cmake_minimum_required(VERSION 2.8)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Qml REQUIRED)
find_package(Qt5Quick REQUIRED)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
FILE(GLOB_RECURSE QML_FILES "${CMAKE_SOURCE_DIR}/*.qml")
add_custom_target(qml_files SOURCES ${QML_FILES})
set(CPP_FILES ${CMAKE_SOURCE_DIR}/main.cpp)
add_executable(${PROJECT_NAME} ${CPP_FILES} ${CMAKE_SOURCE_DIR}/qml.qrc)
qt5_use_modules(${PROJECT_NAME} Core Gui Qml Quick)
install(TARGETS ${PROJECT_NAME} DESTINATION /bin)
#snapcraft.yml
name: simpleapp
version: 1.0
summary: Qt Application Example
description: A simple app
confinement: devmode
apps:
simpleapp:
command: qt5-launch simpleapp
plugs:
- unity7
- home
parts:
application:
plugin: cmake
source: .
build-packages:
- qtbase5-dev
- qtdeclarative5-dev
stage-packages:
- libqt5gui5
- libgtk2.0-0
- ubuntu-sdk-libs # probably overkill but fine for this example
after: [qt5conf] # use the qt5-launch wiki part to setup env
, Чтобы создать снимок и выполнить его:
$ snapcraft snap
$ sudo snap install simpleapp_1.0_amd64.snap
$ simpleapp
И просто используют стандартную выполненную конфигурацию в qtcreator.