При выполнении QML/C ++ сборка приложения с CMake не может работать из QtCreator или поспешного пакета

Я пытаюсь получить 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), выполнение приложения без любых проблем.

CMakeLists.txt

snapcraft.yaml

Все тесты были сделаны на Ubuntu 16.04, полностью актуальной с человечностью-sdk ppa добавленный.

ОБНОВЛЕНИЕ: Протестированный на новом VM с Ubuntu 16.04 в надеждах, которая является, была просто проблема среды, и проблема все еще воспроизводит

0
задан 27 June 2016 в 11:33

1 ответ

Похож на Ваших пропавших без вести 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.

1
ответ дан 29 September 2019 в 01:11

Другие вопросы по тегам:

Похожие вопросы: