无法在 Windows 上使用 CMake 运行我构建的 Qt Design Studio (Qt 6) 项目
我正在尝试使用 CMake 和 mingw64 运行已编译的 Qt6 项目,但是,Qt6 显然找不到 QtQuick.Studio.Effects
、QtQuick.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();
}
我已经正确设置了两个环境变量,转到 lib
和 bin
中 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 themingw64
folder of Qt6.
I'm completely stuck on this, any help is appreciated :)
Have a nice day.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论