无法在 Windows 上使用 CMake 运行我构建的 Qt Design Studio (Qt 6) 项目

发布于 2025-01-16 10:18:32 字数 3035 浏览 1 评论 0原文

我正在尝试使用 CMake 和 mingw64 运行已编译的 Qt6 项目,但是,Qt6 显然找不到 QtQuick.Studio.EffectsQtQuick.Studio.Components 和 <代码>QtGraphicalEffects。

>这是执行编译的二进制文件时的错误日志:

QQmlApplicationEngine failed to load component
qrc:Main/main.qml:4:1: Type App unavailable
qrc:/content/App.qml:38:1: module "QtQuick.Studio.Effects" is not installed
qrc:/content/App.qml:37:1: module "QtQuick.Studio.Components" is not installed
qrc:/content/App.qml:35:1: module "QtGraphicalEffects" is not installed
qrc:/content/App.qml:38:1: module "QtQuick.Studio.Effects" is not installed
qrc:/content/App.qml:37:1: module "QtQuick.Studio.Components" is not installed
qrc:/content/App.qml:35:1: module "QtGraphicalEffects" is not installed
qrc:/content/App.qml:38:1: module "QtQuick.Studio.Effects" is not installed
qrc:/content/App.qml:37:1: module "QtQuick.Studio.Components" is not installed
qrc:/content/App.qml:35:1: module "QtGraphicalEffects" is not installed

它在 Qt Design Studio 预览版(安装了 Qt6)上正确运行。

>这是 CMake 配置:

cmake_minimum_required(VERSION 3.18)

project(MeanieProjectApp LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

find_package(Qt6 REQUIRED COMPONENTS Core Widgets Gui Qml Quick)
add_executable(MeanieProjectApp src/main.cpp)

target_link_libraries(MeanieProjectApp PRIVATE
    Qt${QT_VERSION_MAJOR}::Core
    Qt${QT_VERSION_MAJOR}::Gui
    Qt${QT_VERSION_MAJOR}::Quick
    Qt${QT_VERSION_MAJOR}::Qml
)

include(${CMAKE_CURRENT_SOURCE_DIR}/qmlmodules)

> App.qml 文件的第一行包含导入:

import QtQuick 2.15
import QtQuick.Shapes 1.2
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
import QtQuick.Controls.Material 2.15
import QtGraphicalEffects 1.15
import QtQuick.Timeline 1.0
import QtQuick.Studio.Components 1.0
import QtQuick.Studio.Effects 1.0

import MeanieProject 1.0

>最后,main.cpp:

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    qputenv("QT_LOGGING_RULES", "qt.qml.connections=false");
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    const QUrl url(u"qrc:Main/main.qml"_qs);
    QObject::connect(
                &engine, &QQmlApplicationEngine::objectCreated, &app,
                [url](QObject *obj, const QUrl &objUrl) {
        if (!obj && url == objUrl)
            QCoreApplication::exit(-1);
    },
    Qt::QueuedConnection);

    engine.addImportPath(QCoreApplication::applicationDirPath() + "/qml");
    engine.addImportPath(":/");
    engine.addImportPath("qrc:/qml/imports");

    engine.load(url);

    if (engine.rootObjects().isEmpty()) {
        return -1;
    }

    return app.exec();
}

我已经正确设置了两个环境变量,转到 libbin 中 Qt6 的 mingw64 文件夹。

我完全陷入困境,感谢任何帮助:) 祝你今天过得愉快。

I'm trying to run a compiled Qt6 project with CMake and mingw64, however, Qt6 apparently can't find QtQuick.Studio.Effects, QtQuick.Studio.Components and QtGraphicalEffects.

> This is the error log when executing the compiled binary:

QQmlApplicationEngine failed to load component
qrc:Main/main.qml:4:1: Type App unavailable
qrc:/content/App.qml:38:1: module "QtQuick.Studio.Effects" is not installed
qrc:/content/App.qml:37:1: module "QtQuick.Studio.Components" is not installed
qrc:/content/App.qml:35:1: module "QtGraphicalEffects" is not installed
qrc:/content/App.qml:38:1: module "QtQuick.Studio.Effects" is not installed
qrc:/content/App.qml:37:1: module "QtQuick.Studio.Components" is not installed
qrc:/content/App.qml:35:1: module "QtGraphicalEffects" is not installed
qrc:/content/App.qml:38:1: module "QtQuick.Studio.Effects" is not installed
qrc:/content/App.qml:37:1: module "QtQuick.Studio.Components" is not installed
qrc:/content/App.qml:35:1: module "QtGraphicalEffects" is not installed

It runs correctly on the Qt Design Studio preview (Qt6 installed).

> This is the CMake config:

cmake_minimum_required(VERSION 3.18)

project(MeanieProjectApp LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

find_package(Qt6 REQUIRED COMPONENTS Core Widgets Gui Qml Quick)
add_executable(MeanieProjectApp src/main.cpp)

target_link_libraries(MeanieProjectApp PRIVATE
    Qt${QT_VERSION_MAJOR}::Core
    Qt${QT_VERSION_MAJOR}::Gui
    Qt${QT_VERSION_MAJOR}::Quick
    Qt${QT_VERSION_MAJOR}::Qml
)

include(${CMAKE_CURRENT_SOURCE_DIR}/qmlmodules)

> The first lines of the App.qml file, containing the imports:

import QtQuick 2.15
import QtQuick.Shapes 1.2
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
import QtQuick.Controls.Material 2.15
import QtGraphicalEffects 1.15
import QtQuick.Timeline 1.0
import QtQuick.Studio.Components 1.0
import QtQuick.Studio.Effects 1.0

import MeanieProject 1.0

> And finally, main.cpp:

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    qputenv("QT_LOGGING_RULES", "qt.qml.connections=false");
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    const QUrl url(u"qrc:Main/main.qml"_qs);
    QObject::connect(
                &engine, &QQmlApplicationEngine::objectCreated, &app,
                [url](QObject *obj, const QUrl &objUrl) {
        if (!obj && url == objUrl)
            QCoreApplication::exit(-1);
    },
    Qt::QueuedConnection);

    engine.addImportPath(QCoreApplication::applicationDirPath() + "/qml");
    engine.addImportPath(":/");
    engine.addImportPath("qrc:/qml/imports");

    engine.load(url);

    if (engine.rootObjects().isEmpty()) {
        return -1;
    }

    return app.exec();
}

I have correctly set up my two environments variables, going to lib and bin in the
mingw64 folder of Qt6.

I'm completely stuck on this, any help is appreciated :)
Have a nice day.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文