forked from qt-creator/qt-creator
Qmake: Use target-specific extension for deployment
Add file extensions to execatables about to be deployed based on the OS found in the toolchain's targetAbi instead of using the hostOs(). This should fix deployment from windows to non-windows machines. Task-number: QTCREATORBUG-21608 Change-Id: I83678bda1d56ff24848b7b498b95081d00b5a5f0 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Robert Loehning <robert.loehning@qt.io>
This commit is contained in:
committed by
Eike Ziller
parent
bba377f675
commit
383f0b9fcc
@@ -547,6 +547,27 @@ Abi Abi::abiFromTargetTriplet(const QString &triple)
|
||||
return Abi(arch, os, flavor, format, width);
|
||||
}
|
||||
|
||||
Utils::OsType Abi::abiOsToOsType(const Abi::OS os)
|
||||
{
|
||||
switch (os) {
|
||||
case ProjectExplorer::Abi::LinuxOS:
|
||||
return Utils::OsType::OsTypeLinux;
|
||||
case ProjectExplorer::Abi::DarwinOS:
|
||||
return Utils::OsType::OsTypeMac;
|
||||
case ProjectExplorer::Abi::BsdOS:
|
||||
case ProjectExplorer::Abi::UnixOS:
|
||||
return Utils::OsType::OsTypeOtherUnix;
|
||||
case ProjectExplorer::Abi::WindowsOS:
|
||||
return Utils::OsType::OsTypeWindows;
|
||||
case ProjectExplorer::Abi::VxWorks:
|
||||
case ProjectExplorer::Abi::QnxOS:
|
||||
case ProjectExplorer::Abi::BareMetalOS:
|
||||
case ProjectExplorer::Abi::UnknownOS:
|
||||
return Utils::OsType::OsTypeOther;
|
||||
}
|
||||
return Utils::OsType::OsTypeOther;
|
||||
}
|
||||
|
||||
QString Abi::toString() const
|
||||
{
|
||||
const QStringList dn = {toString(m_architecture), toString(m_os), toString(m_osFlavor),
|
||||
|
@@ -27,6 +27,8 @@
|
||||
|
||||
#include "projectexplorer_export.h"
|
||||
|
||||
#include <utils/osspecificaspects.h>
|
||||
|
||||
#include <QList>
|
||||
#include <QHash>
|
||||
|
||||
@@ -112,6 +114,8 @@ public:
|
||||
|
||||
static Abi abiFromTargetTriplet(const QString &machineTriple);
|
||||
|
||||
static Utils::OsType abiOsToOsType(const OS os);
|
||||
|
||||
bool operator != (const Abi &other) const;
|
||||
bool operator == (const Abi &other) const;
|
||||
bool isCompatibleWith(const Abi &other) const;
|
||||
|
@@ -1348,7 +1348,7 @@ QString QmakeProject::executableFor(const QmakeProFileNode *node)
|
||||
} else {
|
||||
const QString extension = file->singleVariableValue(Variable::TargetExt);
|
||||
if (extension.isEmpty())
|
||||
target = HostOsInfo::withExecutableSuffix(ti.target);
|
||||
target = OsSpecificAspects::withExecutableSuffix(Abi::abiOsToOsType(tc->targetAbi().os()), ti.target);
|
||||
else
|
||||
target = ti.target + extension;
|
||||
}
|
||||
|
Reference in New Issue
Block a user