forked from qt-creator/qt-creator
Add stdcpp NDK paths to soLibSearchPath
It's useful when the application uses std::abort & co to get a useful callstack. Change-Id: I805478333bac3eba21db158df52942599a80c088 Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
This commit is contained in:
@@ -30,7 +30,7 @@
|
||||
|
||||
#include <projectexplorer/target.h>
|
||||
|
||||
Utils::FileName Android::AndroidQtSupport::apkPath(ProjectExplorer::Target *target) const
|
||||
Utils::FileName Android::AndroidQtSupport::apkPath(const ProjectExplorer::Target *target) const
|
||||
{
|
||||
if (!target)
|
||||
return Utils::FileName();
|
||||
|
@@ -60,9 +60,9 @@ public:
|
||||
virtual QStringList soLibSearchPath(const ProjectExplorer::Target *target) const = 0;
|
||||
virtual QStringList androidExtraLibs(const ProjectExplorer::Target *target) const = 0;
|
||||
virtual QStringList projectTargetApplications(const ProjectExplorer::Target *target) const = 0;
|
||||
virtual Utils::FileName apkPath(ProjectExplorer::Target *target) const;
|
||||
virtual Utils::FileName androiddeployqtPath(ProjectExplorer::Target *target) const = 0;
|
||||
virtual Utils::FileName androiddeployJsonPath(ProjectExplorer::Target *target) const = 0;
|
||||
virtual Utils::FileName apkPath(const ProjectExplorer::Target *target) const;
|
||||
virtual Utils::FileName androiddeployqtPath(const ProjectExplorer::Target *target) const = 0;
|
||||
virtual Utils::FileName androiddeployJsonPath(const ProjectExplorer::Target *target) const = 0;
|
||||
virtual void manifestSaved(const ProjectExplorer::Target *target) = 0;
|
||||
virtual Utils::FileName manifestSourcePath(const ProjectExplorer::Target *target) = 0;
|
||||
};
|
||||
|
@@ -34,6 +34,10 @@
|
||||
#include <qtsupport/qtkitinformation.h>
|
||||
#include <qmakeprojectmanager/qmakeproject.h>
|
||||
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QRegularExpression>
|
||||
|
||||
using namespace QmakeProjectManager;
|
||||
|
||||
namespace QmakeAndroidSupport {
|
||||
@@ -46,25 +50,36 @@ bool QmakeAndroidSupport::canHandle(const ProjectExplorer::Target *target) const
|
||||
|
||||
QStringList QmakeAndroidSupport::soLibSearchPath(const ProjectExplorer::Target *target) const
|
||||
{
|
||||
QStringList res;
|
||||
QSet<QString> res;
|
||||
QmakeProject *project = qobject_cast<QmakeProject*>(target->project());
|
||||
Q_ASSERT(project);
|
||||
if (!project)
|
||||
return res;
|
||||
return {};
|
||||
|
||||
foreach (QmakeProFile *file, project->allProFiles()) {
|
||||
TargetInformation info = file->targetInformation();
|
||||
res << info.buildDir.toString();
|
||||
res.insert(info.buildDir.toString());
|
||||
Utils::FileName destDir = info.destDir;
|
||||
if (!destDir.isEmpty()) {
|
||||
if (destDir.toFileInfo().isRelative())
|
||||
destDir = Utils::FileName::fromString(QDir::cleanPath(info.buildDir.toString()
|
||||
+ '/' + destDir.toString()));
|
||||
res << destDir.toString();
|
||||
}
|
||||
res.insert(destDir.toString());
|
||||
}
|
||||
QFile deploymentSettings(androiddeployJsonPath(target).toString());
|
||||
if (deploymentSettings.open(QIODevice::ReadOnly)) {
|
||||
QJsonParseError error;
|
||||
QJsonDocument doc = QJsonDocument::fromJson(deploymentSettings.readAll(), &error);
|
||||
if (error.error != QJsonParseError::NoError)
|
||||
continue;
|
||||
|
||||
return res;
|
||||
auto rootObj = doc.object();
|
||||
auto it = rootObj.find("stdcpp-path");
|
||||
if (it != rootObj.constEnd())
|
||||
res.insert(QFileInfo(it.value().toString()).absolutePath());
|
||||
}
|
||||
}
|
||||
return res.toList();
|
||||
}
|
||||
|
||||
QStringList QmakeAndroidSupport::androidExtraLibs(const ProjectExplorer::Target *target) const
|
||||
@@ -97,7 +112,7 @@ QStringList QmakeAndroidSupport::projectTargetApplications(const ProjectExplorer
|
||||
return apps;
|
||||
}
|
||||
|
||||
Utils::FileName QmakeAndroidSupport::androiddeployqtPath(ProjectExplorer::Target *target) const
|
||||
Utils::FileName QmakeAndroidSupport::androiddeployqtPath(const ProjectExplorer::Target *target) const
|
||||
{
|
||||
QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(target->kit());
|
||||
if (!version)
|
||||
@@ -110,7 +125,7 @@ Utils::FileName QmakeAndroidSupport::androiddeployqtPath(ProjectExplorer::Target
|
||||
return Utils::FileName::fromString(command);
|
||||
}
|
||||
|
||||
Utils::FileName QmakeAndroidSupport::androiddeployJsonPath(ProjectExplorer::Target *target) const
|
||||
Utils::FileName QmakeAndroidSupport::androiddeployJsonPath(const ProjectExplorer::Target *target) const
|
||||
{
|
||||
const auto *pro = static_cast<QmakeProject *>(target->project());
|
||||
QmakeAndroidBuildApkStep *buildApkStep
|
||||
|
@@ -39,8 +39,8 @@ public:
|
||||
QStringList soLibSearchPath(const ProjectExplorer::Target *target) const override;
|
||||
QStringList androidExtraLibs(const ProjectExplorer::Target *target) const override;
|
||||
QStringList projectTargetApplications(const ProjectExplorer::Target *target) const override;
|
||||
Utils::FileName androiddeployqtPath(ProjectExplorer::Target *target) const override;
|
||||
Utils::FileName androiddeployJsonPath(ProjectExplorer::Target *target) const override;
|
||||
Utils::FileName androiddeployqtPath(const ProjectExplorer::Target *target) const override;
|
||||
Utils::FileName androiddeployJsonPath(const ProjectExplorer::Target *target) const override;
|
||||
|
||||
void manifestSaved(const ProjectExplorer::Target *target) override;
|
||||
Utils::FileName manifestSourcePath(const ProjectExplorer::Target *target) override;
|
||||
|
Reference in New Issue
Block a user