From b4d8950382c4bf020959d880d8a34b80ce3f5ea5 Mon Sep 17 00:00:00 2001 From: "a.yankovich" Date: Thu, 28 Mar 2019 12:36:21 +0300 Subject: [PATCH] added support of msvc --- Deploy/deploy.cpp | 16 +++++++++++++++ Deploy/deploy.h | 1 + Deploy/deployutils.cpp | 45 ++++++++++++++++++++++++++++++++++++++++++ Deploy/deployutils.h | 4 ++++ 4 files changed, 66 insertions(+) diff --git a/Deploy/deploy.cpp b/Deploy/deploy.cpp index ea2b89e..f82e59f 100644 --- a/Deploy/deploy.cpp +++ b/Deploy/deploy.cpp @@ -78,6 +78,18 @@ void Deploy::setTargetDir() { } } +bool Deploy::deployMSVC() { + qInfo () << "try deploy msvc"; + + auto msvcInstaller = DeployUtils::getVCredist(qmake); + + if (msvcInstaller.isEmpty()) { + return false; + } + + return copyFile(msvcInstaller, targetDir); +} + bool Deploy::setTargets(const QStringList &value) { bool isfillList = false; @@ -248,6 +260,10 @@ void Deploy::deploy() { } } + if (!deployMSVC()) { + QuasarAppUtils::Params::verboseLog("deploy msvc failed"); + } + settings.setValue(targetDir, deployedFiles); } diff --git a/Deploy/deploy.h b/Deploy/deploy.h index 3072ae2..4bef5db 100644 --- a/Deploy/deploy.h +++ b/Deploy/deploy.h @@ -97,6 +97,7 @@ class DEPLOYSHARED_EXPORT Deploy { bool initDir(const QString &path); void setTargetDir(); + bool deployMSVC(); public: Deploy(); diff --git a/Deploy/deployutils.cpp b/Deploy/deployutils.cpp index f40534a..f29b8b1 100644 --- a/Deploy/deployutils.cpp +++ b/Deploy/deployutils.cpp @@ -294,6 +294,51 @@ MSVCVersion DeployUtils::getMSVC(const QString &_qmake) { QString DeployUtils::getVCredist(const QString &_qmake) { auto msvc = getMSVC(_qmake); + QFileInfo qmake(_qmake); + + QDir dir = qmake.absoluteDir(); + + if (!(dir.cdUp() && dir.cdUp() && dir.cdUp() && dir.cd("vcredist"))) { + QuasarAppUtils::Params::verboseLog("redist not findet!"); + return ""; + } + + auto infoList = dir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot); + + auto name = getMSVCName(msvc); + auto version = getMSVCVersion(msvc); + + for (auto &&info: infoList) { + auto file = QFileInfo(info).fileName(); + if (file.contains(name) && file.contains(version)) { + return info.absoluteFilePath(); + } + } + + return ""; +} + +QString DeployUtils::getMSVCName(MSVCVersion msvc) { + if (msvc | MSVCVersion::MSVC_13) { + return "msvc2013"; + } else if (msvc | MSVCVersion::MSVC_15) { + return "msvc2015"; + } else if (msvc | MSVCVersion::MSVC_17) { + return "msvc2017"; + } else if (msvc | MSVCVersion::MSVC_19) { + return "msvc2019"; + } + + return ""; +} + +QString DeployUtils::getMSVCVersion(MSVCVersion msvc) { + if (msvc | MSVCVersion::MSVC_x32) { + return "x86"; + } else if (msvc | MSVCVersion::MSVC_x64) { + return "x64"; + } + return ""; } diff --git a/Deploy/deployutils.h b/Deploy/deployutils.h index bfd67f4..b7bd1ff 100644 --- a/Deploy/deployutils.h +++ b/Deploy/deployutils.h @@ -34,6 +34,10 @@ class Deploy; class DEPLOYSHARED_EXPORT DeployUtils { +private: + static QString getMSVCName(MSVCVersion msvc); + static QString getMSVCVersion(MSVCVersion msvc); + public: enum QtModule : quint64 {