qt模块依赖

//1

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt5Gui")

|| containsHowOften(deploymentInfo.deployedLibraries, "libQt6Gui")) {

LogDebug() << "libQt5Gui/libQt6Gui detected";

pluginList.append("platforms/libqxcb.so");

// pluginList.append("iconengines");

// pluginList.append("imageformats");

// Platform plugin contexts - apparently needed to enter special characters

QStringList platformPluginContexts = QDir(pluginSourcePath + QStringLiteral("/platforminputcontexts")).entryList(QStringList() << QStringLiteral("*.so"));

foreach(const QString &plugin, platformPluginContexts) {

pluginList.append(QStringLiteral("platforminputcontexts/") + plugin);

}

// Platform OpenGL context

if ((containsHowOften(deploymentInfo.deployedLibraries, "libQt5OpenGL"))

or(containsHowOften(deploymentInfo.deployedLibraries, "libQt6OpenGL"))

or(containsHowOften(deploymentInfo.deployedLibraries, "libQt5Gui"))

or(containsHowOften(deploymentInfo.deployedLibraries, "libQt6Gui"))

or(containsHowOften(deploymentInfo.deployedLibraries, "libQt5XcbQpa"))

or(containsHowOften(deploymentInfo.deployedLibraries, "libQt6XcbQpa"))

or(containsHowOften(deploymentInfo.deployedLibraries, "libxcb-glx")))

//2

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt5Svg")

|| containsHowOften(deploymentInfo.deployedLibraries, "libQt6Svg")) {

pluginList.append(QStringLiteral("iconengines/libqsvgicon.so"));

}

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt5Network")) {

appendPluginToList(pluginSourcePath, "bearer", pluginList);

}

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt6Network")) {

appendPluginToList(pluginSourcePath, "networkaccess", pluginList);

appendPluginToList(pluginSourcePath, "networkinformation", pluginList);

appendPluginToList(pluginSourcePath, "tls", pluginList);

}

// Sql plugins if QtSql library is in use

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt5Sql")

|| containsHowOften(deploymentInfo.deployedLibraries, "libQt6Sql")) {

appendPluginToList(pluginSourcePath, "sqldrivers", pluginList);

}

// Multimedia plugins if QtMultimedia library is in use

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt5Multimedia")

|| containsHowOften(deploymentInfo.deployedLibraries, "libQt6Multimedia")) {

appendPluginToList(pluginSourcePath, "audio", pluginList);

appendPluginToList(pluginSourcePath, "mediaservice", pluginList);

// This plugin is specific to Qt 6

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt6Multimedia")) {

appendPluginToList(pluginSourcePath, "playlistformats", pluginList);

}

}

// 3D plugins if Qt3D library is in use

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt63DRender")) {

appendPluginToList(pluginSourcePath, "geometryloaders", pluginList);

appendPluginToList(pluginSourcePath, "renderers", pluginList);

appendPluginToList(pluginSourcePath, "renderplugins", pluginList);

appendPluginToList(pluginSourcePath, "sceneparsers", pluginList);

}

// Sensors plugins if QtSensors library is in use

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt6Sensors")) {

appendPluginToList(pluginSourcePath, "sensorgestures", pluginList);

appendPluginToList(pluginSourcePath, "sensors", pluginList);

}

// CAN bus plugin if QtSerialBus library is in use

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt6SerialBus")) {

appendPluginToList(pluginSourcePath, "canbus", pluginList);

}

// Text to speech plugins if QtTextToSpeech library is in use

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt6TextToSpeech")) {

appendPluginToList(pluginSourcePath, "texttospeech", pluginList);

}

// Location plugins if QtLocation library is in use

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt6Location")) {

appendPluginToList(pluginSourcePath, "geoservices", pluginList);

}

// Qt Quick plugins if QtQuick* libraries are in use

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt6Quick")) {

appendPluginToList(pluginSourcePath, "qmltooling", pluginList);

appendPluginToList(pluginSourcePath, "scenegraph", pluginList);

}

// Qt declarative plugins if QtDeclarative library is in use

if (containsHowOften(deploymentInfo.deployedLibraries, "Qt6Declarative")) {

appendPluginToList(pluginSourcePath, "qml1tooling", pluginList);

}

// Gamepad plugins if QtGamepad library is in use

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt6Gamepad")) {

appendPluginToList(pluginSourcePath, "gamepads", pluginList);

}

// Web view plugins if QtWebView library is in use

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt6WebView")) {

appendPluginToList(pluginSourcePath, "webview", pluginList);

}

QString sourcePath;

QString destinationPath;

// Qt WebEngine if libQt5WebEngineCore is in use

// https://doc-snapshots.qt.io/qt5-5.7/qtwebengine-deploying.html

// TODO: Rather than hardcode the source paths, somehow get them dynamically

// from the Qt instance that is to be bundled (pull requests welcome!)

// especially since stuff that is supposed to come from resources actually

// seems to come in libexec in the upstream Qt binary distribution

if (containsHowOften(deploymentInfo.deployedLibraries, "libQt5WebEngineCore")) {

// Find directories with needed files:

QString qtLibexecPath = qtToBeBundledInfo.value("QT_INSTALL_LIBEXECS");

QString qtDataPath = qtToBeBundledInfo.value("QT_INSTALL_DATA");

QString qtTranslationsPath = qtToBeBundledInfo.value("QT_INSTALL_TRANSLATIONS");

// create destination directories:

QString dstLibexec;

QString dstResources;

QString dstTranslations;

if (fhsLikeMode){

QFileInfo qfi(appDirInfo.binaryPath);

QString qtTargetDir = qfi.absoluteDir().absolutePath() + "/../";

dstLibexec = qtTargetDir + "/libexec";

dstResources = qtTargetDir + "/resources";

dstTranslations = qtTargetDir + "/translations";

}

else {

dstLibexec = appDirInfo.path + "/libexec";

dstResources = appDirInfo.path + "/resources";

dstTranslations = appDirInfo.path + "/translations";

}

QDir().mkpath(dstLibexec);

QDir().mkpath(dstResources);

QDir().mkpath(dstTranslations);

// WebEngine executable:

sourcePath = QDir::cleanPath(qtLibexecPath + "/QtWebEngineProcess");

destinationPath = QDir::cleanPath(dstLibexec + "/QtWebEngineProcess");

copyFilePrintStatus(sourcePath, destinationPath);

// put qt.conf file next to browser process so it can also make use of our local Qt resources

createQtConfForQtWebEngineProcess(dstLibexec);

// Resources:

sourcePath = QDir::cleanPath(qtDataPath + "/resources/qtwebengine_resources.pak");

destinationPath = QDir::cleanPath(dstResources + "/qtwebengine_resources.pak");

copyFilePrintStatus(sourcePath, destinationPath);

sourcePath = QDir::cleanPath(qtDataPath + "/resources/qtwebengine_devtools_resources.pak");

destinationPath = QDir::cleanPath(dstResources + "/qtwebengine_devtools_resources.pak");

copyFilePrintStatus(sourcePath, destinationPath);

sourcePath = QDir::cleanPath(qtDataPath + "/resources/qtwebengine_resources_100p.pak");

destinationPath = QDir::cleanPath(dstResources + "/qtwebengine_resources_100p.pak");

copyFilePrintStatus(sourcePath, destinationPath);

sourcePath = QDir::cleanPath(qtDataPath + "/resources/qtwebengine_resources_200p.pak");

destinationPath = QDir::cleanPath(dstResources + "/qtwebengine_resources_200p.pak");

copyFilePrintStatus(sourcePath, destinationPath);

sourcePath = QDir::cleanPath(qtDataPath + "/resources/icudtl.dat");

destinationPath = QDir::cleanPath(dstResources + "/icudtl.dat");

copyFilePrintStatus(sourcePath, destinationPath);

// Translations:

sourcePath = QDir::cleanPath(qtTranslationsPath + "/qtwebengine_locales");

destinationPath = QDir::cleanPath(dstTranslations + "/qtwebengine_locales");

recursiveCopy(sourcePath, destinationPath);

}

if (!extraQtPlugins.isEmpty()) {

LogNormal() << "Deploying extra plugins.";

foreach(const QString &plugin, extraQtPlugins) {

QDir pluginDirectory(pluginSourcePath + "/" + plugin);

if (pluginDirectory.exists()) {

//If it is a plugin directory we will deploy the entire directory

QStringList plugins = pluginDirectory.entryList(QStringList() << QStringLiteral("*.so"));

foreach(const QString &pluginFile, plugins) {

pluginList.append(plugin + "/" + pluginFile);

LogDebug() << plugin + "/" + pluginFile << "appended";

}

}

else {

//If it isn't a directory we asume it is an explicit plugin and we will try to deploy that

if (!pluginList.contains(plugin)) {

if (QFile::exists(pluginSourcePath + "/" + plugin)) {

pluginList.append(plugin);

LogDebug() << plugin << "appended";

}

else {

LogWarning() << "The plugin" << pluginSourcePath + "/" + plugin << "could not be found. Please check spelling and try again!";

}

}

else {

LogDebug() << "The plugin" << plugin << "was already deployed.";

}

}

}

}

相关推荐
qq_401700413 分钟前
Qt自定义信号槽详解:带参发射 vs sender()获取,两种多信号关联方案全掌握
java·数据库·qt
啊哈一半醒12 分钟前
Go 语言 Context 全方位详解:原理、实战与避坑
开发语言·后端·golang
铅笔侠_小龙虾14 分钟前
rust 学习(9):结构体
开发语言·学习·rust
此生决int24 分钟前
深入理解C++系列(11)——stack、queue和priority_queue
开发语言·c++
周杰伦fans29 分钟前
数列极限的定义
java·开发语言
2601_963869952 小时前
【计算机毕业设计】基于Java的潮牌购物网站系统的设计与实现
java·开发语言·课程设计
名字还没想好☜2 小时前
Go 的 io.Reader/Writer 组合实战:io.Copy、TeeReader、MultiWriter 优雅处理数据流
开发语言·后端·golang·go·iphone
郝学胜-神的一滴2 小时前
Qt 高级编程 042:进度条从入门到自定义美化
开发语言·c++·qt·软件开发·用户界面
鸿芯微控科技2 小时前
压电纳米定位分辨率怎么测?噪声、带宽、最小可检测位移与Python分析
开发语言·python·噪声分析·压电执行器·纳米定位·位移测量
会编程的土豆3 小时前
从「锁」到「时间」:后端里几个容易混的概念
java·开发语言·数据库·goland