QmakeProjectManager: Take "executable" CONFIG value into account

... when setting up deployment data.

Fixes: QTCREATORBUG-22663
Change-Id: I88c428177b76a7bb59fc884c0b727fd0f26a780f
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
Christian Kandeler
2019-07-04 11:30:56 +02:00
parent 243c3a4c1b
commit 599b03179e
3 changed files with 11 additions and 7 deletions

View File

@@ -1860,8 +1860,9 @@ InstallsList QmakeProFile::installsList(const QtSupport::ProFileReader *reader,
bool fixInstallPrefix = (installPrefix != devInstallPrefix);
foreach (const QString &item, itemList) {
bool active = !reader->values(item + QLatin1String(".CONFIG"))
.contains(QLatin1String("no_default_install"));
const QStringList config = reader->values(item + ".CONFIG");
const bool active = !config.contains("no_default_install");
const bool executable = config.contains("executable");
const QString pathVar = item + QLatin1String(".path");
const QStringList &itemPaths = reader->values(pathVar);
if (itemPaths.count() != 1) {
@@ -1889,7 +1890,7 @@ InstallsList QmakeProFile::installsList(const QtSupport::ProFileReader *reader,
} else {
const auto &itemFiles = reader->fixifiedValues(
item + QLatin1String(".files"), projectDir, buildDir, true);
result.items << InstallsItem(itemPath, itemFiles, active);
result.items << InstallsItem(itemPath, itemFiles, active, executable);
}
}
return result;

View File

@@ -265,11 +265,12 @@ public:
class QMAKEPROJECTMANAGER_EXPORT InstallsItem {
public:
InstallsItem() = default;
InstallsItem(QString p, QVector<ProFileEvaluator::SourceFile> f, bool a)
: path(p), files(f), active(a) {}
InstallsItem(QString p, QVector<ProFileEvaluator::SourceFile> f, bool a, bool e)
: path(p), files(f), active(a), executable(e) {}
QString path;
QVector<ProFileEvaluator::SourceFile> files;
bool active = false;
bool executable = false;
};
class QMAKEPROJECTMANAGER_EXPORT InstallsList {

View File

@@ -1062,8 +1062,10 @@ void QmakeProject::collectData(const QmakeProFile *file, DeploymentData &deploym
for (const InstallsItem &item : installsList.items) {
if (!item.active)
continue;
foreach (const auto &localFile, item.files)
deploymentData.addFile(localFile.fileName, item.path);
for (const auto &localFile : item.files) {
deploymentData.addFile(localFile.fileName, item.path, item.executable
? DeployableFile::TypeExecutable : DeployableFile::TypeNormal);
}
}
switch (file->projectType()) {