forked from qt-creator/qt-creator
QbsProjectManager: Take product profiles into account.
- Identify products by the name/profile tuple instead of just the name. - If the product's profile differs from that of the overall project, add it to the visual representation. Change-Id: I4a89db60911277977458370157e435472bbe428f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
This commit is contained in:
@@ -549,7 +549,7 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root,
|
|||||||
// QbsProductNode:
|
// QbsProductNode:
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
|
|
||||||
QbsProductNode::QbsProductNode(const qbs::ProductData &prd) :
|
QbsProductNode::QbsProductNode(const qbs::Project &project, const qbs::ProductData &prd) :
|
||||||
QbsBaseProjectNode(prd.location().fileName())
|
QbsBaseProjectNode(prd.location().fileName())
|
||||||
{
|
{
|
||||||
if (m_productIcon.isNull())
|
if (m_productIcon.isNull())
|
||||||
@@ -562,7 +562,7 @@ QbsProductNode::QbsProductNode(const qbs::ProductData &prd) :
|
|||||||
prd.location().line());
|
prd.location().line());
|
||||||
addFileNodes(QList<ProjectExplorer::FileNode *>() << idx);
|
addFileNodes(QList<ProjectExplorer::FileNode *>() << idx);
|
||||||
|
|
||||||
setQbsProductData(prd);
|
setQbsProductData(project, prd);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QbsProductNode::isEnabled() const
|
bool QbsProductNode::isEnabled() const
|
||||||
@@ -622,7 +622,7 @@ bool QbsProductNode::removeFiles(const QStringList &filePaths, QStringList *notR
|
|||||||
QTC_ASSERT(false, return false);
|
QTC_ASSERT(false, return false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QbsProductNode::setQbsProductData(const qbs::ProductData prd)
|
void QbsProductNode::setQbsProductData(const qbs::Project &project, const qbs::ProductData prd)
|
||||||
{
|
{
|
||||||
if (m_qbsProductData == prd)
|
if (m_qbsProductData == prd)
|
||||||
return;
|
return;
|
||||||
@@ -631,7 +631,7 @@ void QbsProductNode::setQbsProductData(const qbs::ProductData prd)
|
|||||||
bool productIsEnabled = prd.isEnabled();
|
bool productIsEnabled = prd.isEnabled();
|
||||||
bool updateExisting = productWasEnabled != productIsEnabled;
|
bool updateExisting = productWasEnabled != productIsEnabled;
|
||||||
|
|
||||||
setDisplayName(prd.name());
|
setDisplayName(QbsProject::productDisplayName(project, prd));
|
||||||
setPath(prd.location().fileName());
|
setPath(prd.location().fileName());
|
||||||
const QString &productPath = QFileInfo(prd.location().fileName()).absolutePath();
|
const QString &productPath = QFileInfo(prd.location().fileName()).absolutePath();
|
||||||
|
|
||||||
@@ -685,7 +685,7 @@ QList<ProjectExplorer::RunConfiguration *> QbsProductNode::runConfigurations() c
|
|||||||
QbsRunConfiguration *qbsRc = qobject_cast<QbsRunConfiguration *>(rc);
|
QbsRunConfiguration *qbsRc = qobject_cast<QbsRunConfiguration *>(rc);
|
||||||
if (!qbsRc)
|
if (!qbsRc)
|
||||||
continue;
|
continue;
|
||||||
if (qbsRc->qbsProduct() == qbsProductData().name())
|
if (qbsRc->uniqueProductName() == QbsProject::uniqueProductName(qbsProductData()))
|
||||||
result << qbsRc;
|
result << qbsRc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -717,13 +717,7 @@ QbsProjectNode::~QbsProjectNode()
|
|||||||
// do not delete m_project
|
// do not delete m_project
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QbsProjectNode::addFiles(const QStringList &filePaths, QStringList *notAdded)
|
void QbsProjectNode::update(const qbs::Project &qbsProject, const qbs::ProjectData &prjData)
|
||||||
{
|
|
||||||
QbsProductNode *prd = findProductNode(displayName());
|
|
||||||
return prd ? prd->addFiles(filePaths, notAdded) : false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void QbsProjectNode::update(const qbs::ProjectData &prjData)
|
|
||||||
{
|
{
|
||||||
QList<ProjectExplorer::ProjectNode *> toAdd;
|
QList<ProjectExplorer::ProjectNode *> toAdd;
|
||||||
QList<ProjectExplorer::ProjectNode *> toRemove = subProjectNodes();
|
QList<ProjectExplorer::ProjectNode *> toRemove = subProjectNodes();
|
||||||
@@ -732,20 +726,20 @@ void QbsProjectNode::update(const qbs::ProjectData &prjData)
|
|||||||
QbsProjectNode *qn = findProjectNode(subData.name());
|
QbsProjectNode *qn = findProjectNode(subData.name());
|
||||||
if (!qn) {
|
if (!qn) {
|
||||||
QbsProjectNode *subProject = new QbsProjectNode(subData.location().fileName());
|
QbsProjectNode *subProject = new QbsProjectNode(subData.location().fileName());
|
||||||
subProject->update(subData);
|
subProject->update(qbsProject, subData);
|
||||||
toAdd << subProject;
|
toAdd << subProject;
|
||||||
} else {
|
} else {
|
||||||
qn->update(subData);
|
qn->update(qbsProject, subData);
|
||||||
toRemove.removeOne(qn);
|
toRemove.removeOne(qn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (const qbs::ProductData &prd, prjData.products()) {
|
foreach (const qbs::ProductData &prd, prjData.products()) {
|
||||||
QbsProductNode *qn = findProductNode(prd.name());
|
QbsProductNode *qn = findProductNode(QbsProject::uniqueProductName(prd));
|
||||||
if (!qn) {
|
if (!qn) {
|
||||||
toAdd << new QbsProductNode(prd);
|
toAdd << new QbsProductNode(qbsProject, prd);
|
||||||
} else {
|
} else {
|
||||||
qn->setQbsProductData(prd);
|
qn->setQbsProductData(qbsProject, prd);
|
||||||
toRemove.removeOne(qn);
|
toRemove.removeOne(qn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -785,11 +779,11 @@ void QbsProjectNode::ctor()
|
|||||||
<< new ProjectExplorer::FileNode(path(), ProjectExplorer::ProjectFileType, false));
|
<< new ProjectExplorer::FileNode(path(), ProjectExplorer::ProjectFileType, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
QbsProductNode *QbsProjectNode::findProductNode(const QString &name)
|
QbsProductNode *QbsProjectNode::findProductNode(const QString &uniqueName)
|
||||||
{
|
{
|
||||||
foreach (ProjectExplorer::ProjectNode *n, subProjectNodes()) {
|
foreach (ProjectExplorer::ProjectNode *n, subProjectNodes()) {
|
||||||
QbsProductNode *qn = qobject_cast<QbsProductNode *>(n);
|
QbsProductNode *qn = qobject_cast<QbsProductNode *>(n);
|
||||||
if (qn && qn->qbsProductData().name() == name)
|
if (qn && QbsProject::uniqueProductName(qn->qbsProductData()) == uniqueName)
|
||||||
return qn;
|
return qn;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -830,7 +824,7 @@ void QbsRootProjectNode::update()
|
|||||||
}
|
}
|
||||||
QbsGroupNode::setupFiles(m_buildSystemFiles, projectBuildSystemFiles, base.toString(), false);
|
QbsGroupNode::setupFiles(m_buildSystemFiles, projectBuildSystemFiles, base.toString(), false);
|
||||||
|
|
||||||
update(m_project->qbsProjectData());
|
update(m_project->qbsProject(), m_project->qbsProjectData());
|
||||||
}
|
}
|
||||||
|
|
||||||
static QSet<QString> referencedBuildSystemFiles(const qbs::ProjectData &data)
|
static QSet<QString> referencedBuildSystemFiles(const qbs::ProjectData &data)
|
||||||
|
@@ -132,7 +132,7 @@ class QbsProductNode : public QbsBaseProjectNode
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit QbsProductNode(const qbs::ProductData &prd);
|
explicit QbsProductNode(const qbs::Project &project, const qbs::ProductData &prd);
|
||||||
|
|
||||||
bool isEnabled() const;
|
bool isEnabled() const;
|
||||||
bool showInSimpleTree() const;
|
bool showInSimpleTree() const;
|
||||||
@@ -140,7 +140,7 @@ public:
|
|||||||
bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0);
|
bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0);
|
||||||
bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0);
|
bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0);
|
||||||
|
|
||||||
void setQbsProductData(const qbs::ProductData prd);
|
void setQbsProductData(const qbs::Project &project, const qbs::ProductData prd);
|
||||||
const qbs::ProductData qbsProductData() const { return m_qbsProductData; }
|
const qbs::ProductData qbsProductData() const { return m_qbsProductData; }
|
||||||
|
|
||||||
QList<ProjectExplorer::RunConfiguration *> runConfigurations() const;
|
QList<ProjectExplorer::RunConfiguration *> runConfigurations() const;
|
||||||
@@ -164,8 +164,6 @@ public:
|
|||||||
explicit QbsProjectNode(const QString &path);
|
explicit QbsProjectNode(const QString &path);
|
||||||
~QbsProjectNode();
|
~QbsProjectNode();
|
||||||
|
|
||||||
bool addFiles(const QStringList &filePaths, QStringList *notAdded = 0);
|
|
||||||
|
|
||||||
virtual QbsProject *project() const;
|
virtual QbsProject *project() const;
|
||||||
const qbs::Project qbsProject() const;
|
const qbs::Project qbsProject() const;
|
||||||
const qbs::ProjectData qbsProjectData() const { return m_projectData; }
|
const qbs::ProjectData qbsProjectData() const { return m_projectData; }
|
||||||
@@ -173,12 +171,12 @@ public:
|
|||||||
bool showInSimpleTree() const;
|
bool showInSimpleTree() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void update(const qbs::ProjectData &prjData);
|
void update(const qbs::Project &qbsProject, const qbs::ProjectData &prjData);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void ctor();
|
void ctor();
|
||||||
|
|
||||||
QbsProductNode *findProductNode(const QString &name);
|
QbsProductNode *findProductNode(const QString &uniqueName);
|
||||||
QbsProjectNode *findProjectNode(const QString &name);
|
QbsProjectNode *findProjectNode(const QString &name);
|
||||||
|
|
||||||
static QIcon m_projectIcon;
|
static QIcon m_projectIcon;
|
||||||
|
@@ -322,7 +322,7 @@ qbs::BuildJob *QbsProject::build(const qbs::BuildOptions &opts, QStringList prod
|
|||||||
foreach (const QString &productName, productNames) {
|
foreach (const QString &productName, productNames) {
|
||||||
bool found = false;
|
bool found = false;
|
||||||
foreach (const qbs::ProductData &data, qbsProjectData().allProducts()) {
|
foreach (const qbs::ProductData &data, qbsProjectData().allProducts()) {
|
||||||
if (data.name() == productName) {
|
if (uniqueProductName(data) == productName) {
|
||||||
found = true;
|
found = true;
|
||||||
products.append(data);
|
products.append(data);
|
||||||
break;
|
break;
|
||||||
@@ -583,6 +583,20 @@ void QbsProject::generateErrors(const qbs::ErrorInfo &e)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString QbsProject::productDisplayName(const qbs::Project &project,
|
||||||
|
const qbs::ProductData &product)
|
||||||
|
{
|
||||||
|
QString displayName = product.name();
|
||||||
|
if (product.profile() != project.profile())
|
||||||
|
displayName.append(QLatin1String(" [")).append(product.profile()).append(QLatin1Char(']'));
|
||||||
|
return displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString QbsProject::uniqueProductName(const qbs::ProductData &product)
|
||||||
|
{
|
||||||
|
return product.name() + QLatin1Char('.') + product.profile();
|
||||||
|
}
|
||||||
|
|
||||||
void QbsProject::parse(const QVariantMap &config, const Environment &env, const QString &dir)
|
void QbsProject::parse(const QVariantMap &config, const Environment &env, const QString &dir)
|
||||||
{
|
{
|
||||||
prepareForParsing();
|
prepareForParsing();
|
||||||
@@ -764,14 +778,15 @@ void QbsProject::updateQmlJsCodeModel(const qbs::ProjectData &prj)
|
|||||||
modelManager->updateProjectInfo(projectInfo, this);
|
modelManager->updateProjectInfo(projectInfo, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QbsProject::updateApplicationTargets(const qbs::ProjectData &projectData)
|
void QbsProject::updateApplicationTargets()
|
||||||
{
|
{
|
||||||
ProjectExplorer::BuildTargetInfoList applications;
|
ProjectExplorer::BuildTargetInfoList applications;
|
||||||
foreach (const qbs::ProductData &productData, projectData.allProducts()) {
|
foreach (const qbs::ProductData &productData, m_projectData.allProducts()) {
|
||||||
if (!productData.isEnabled() || !productData.isRunnable())
|
if (!productData.isEnabled() || !productData.isRunnable())
|
||||||
continue;
|
continue;
|
||||||
|
const QString displayName = productDisplayName(m_qbsProject, productData);
|
||||||
if (productData.targetArtifacts().isEmpty()) { // No build yet.
|
if (productData.targetArtifacts().isEmpty()) { // No build yet.
|
||||||
applications.list << ProjectExplorer::BuildTargetInfo(productData.name(),
|
applications.list << ProjectExplorer::BuildTargetInfo(displayName,
|
||||||
Utils::FileName(),
|
Utils::FileName(),
|
||||||
Utils::FileName::fromString(productData.location().fileName()));
|
Utils::FileName::fromString(productData.location().fileName()));
|
||||||
continue;
|
continue;
|
||||||
@@ -780,7 +795,7 @@ void QbsProject::updateApplicationTargets(const qbs::ProjectData &projectData)
|
|||||||
QTC_ASSERT(ta.isValid(), continue);
|
QTC_ASSERT(ta.isValid(), continue);
|
||||||
if (!ta.isExecutable())
|
if (!ta.isExecutable())
|
||||||
continue;
|
continue;
|
||||||
applications.list << ProjectExplorer::BuildTargetInfo(productData.name(),
|
applications.list << ProjectExplorer::BuildTargetInfo(displayName,
|
||||||
Utils::FileName::fromString(ta.filePath()),
|
Utils::FileName::fromString(ta.filePath()),
|
||||||
Utils::FileName::fromString(productData.location().fileName()));
|
Utils::FileName::fromString(productData.location().fileName()));
|
||||||
}
|
}
|
||||||
@@ -788,14 +803,14 @@ void QbsProject::updateApplicationTargets(const qbs::ProjectData &projectData)
|
|||||||
activeTarget()->setApplicationTargets(applications);
|
activeTarget()->setApplicationTargets(applications);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QbsProject::updateDeploymentInfo(const qbs::Project &project)
|
void QbsProject::updateDeploymentInfo()
|
||||||
{
|
{
|
||||||
ProjectExplorer::DeploymentData deploymentData;
|
ProjectExplorer::DeploymentData deploymentData;
|
||||||
if (project.isValid()) {
|
if (m_qbsProject.isValid()) {
|
||||||
qbs::InstallOptions installOptions;
|
qbs::InstallOptions installOptions;
|
||||||
installOptions.setInstallRoot(QLatin1String("/"));
|
installOptions.setInstallRoot(QLatin1String("/"));
|
||||||
foreach (const qbs::InstallableFile &f,
|
foreach (const qbs::InstallableFile &f, m_qbsProject
|
||||||
project.installableFilesForProject(m_projectData, installOptions)) {
|
.installableFilesForProject(m_projectData, installOptions)) {
|
||||||
deploymentData.addFile(f.sourceFilePath(), f.targetDirectory(), f.isExecutable()
|
deploymentData.addFile(f.sourceFilePath(), f.targetDirectory(), f.isExecutable()
|
||||||
? ProjectExplorer::DeployableFile::TypeExecutable
|
? ProjectExplorer::DeployableFile::TypeExecutable
|
||||||
: ProjectExplorer::DeployableFile::TypeNormal);
|
: ProjectExplorer::DeployableFile::TypeNormal);
|
||||||
@@ -806,8 +821,8 @@ void QbsProject::updateDeploymentInfo(const qbs::Project &project)
|
|||||||
|
|
||||||
void QbsProject::updateBuildTargetData()
|
void QbsProject::updateBuildTargetData()
|
||||||
{
|
{
|
||||||
updateApplicationTargets(m_projectData);
|
updateApplicationTargets();
|
||||||
updateDeploymentInfo(m_qbsProject);
|
updateDeploymentInfo();
|
||||||
foreach (Target *t, targets())
|
foreach (Target *t, targets())
|
||||||
t->updateDefaultRunConfigurations();
|
t->updateDefaultRunConfigurations();
|
||||||
}
|
}
|
||||||
|
@@ -105,6 +105,10 @@ public:
|
|||||||
bool needsSpecialDeployment() const;
|
bool needsSpecialDeployment() const;
|
||||||
void generateErrors(const qbs::ErrorInfo &e);
|
void generateErrors(const qbs::ErrorInfo &e);
|
||||||
|
|
||||||
|
static QString productDisplayName(const qbs::Project &project,
|
||||||
|
const qbs::ProductData &product);
|
||||||
|
static QString uniqueProductName(const qbs::ProductData &product);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void invalidate();
|
void invalidate();
|
||||||
void delayParsing();
|
void delayParsing();
|
||||||
@@ -131,8 +135,8 @@ private:
|
|||||||
void updateDocuments(const QSet<QString> &files);
|
void updateDocuments(const QSet<QString> &files);
|
||||||
void updateCppCodeModel(const qbs::ProjectData &prj);
|
void updateCppCodeModel(const qbs::ProjectData &prj);
|
||||||
void updateQmlJsCodeModel(const qbs::ProjectData &prj);
|
void updateQmlJsCodeModel(const qbs::ProjectData &prj);
|
||||||
void updateApplicationTargets(const qbs::ProjectData &projectData);
|
void updateApplicationTargets();
|
||||||
void updateDeploymentInfo(const qbs::Project &project);
|
void updateDeploymentInfo();
|
||||||
void updateBuildTargetData();
|
void updateBuildTargetData();
|
||||||
|
|
||||||
static bool ensureWriteableQbsFile(const QString &file);
|
static bool ensureWriteableQbsFile(const QString &file);
|
||||||
|
@@ -398,7 +398,7 @@ void QbsProjectManagerPlugin::buildSubprojectContextMenu()
|
|||||||
|
|
||||||
QStringList toBuild;
|
QStringList toBuild;
|
||||||
foreach (const qbs::ProductData &data, subProject->qbsProjectData().allProducts())
|
foreach (const qbs::ProductData &data, subProject->qbsProjectData().allProducts())
|
||||||
toBuild << data.name();
|
toBuild << QbsProject::uniqueProductName(data);
|
||||||
|
|
||||||
buildProducts(m_selectedProject, toBuild);
|
buildProducts(m_selectedProject, toBuild);
|
||||||
}
|
}
|
||||||
@@ -424,7 +424,7 @@ void QbsProjectManagerPlugin::buildSubproject()
|
|||||||
|
|
||||||
QStringList toBuild;
|
QStringList toBuild;
|
||||||
foreach (const qbs::ProductData &data, subproject->qbsProjectData().allProducts())
|
foreach (const qbs::ProductData &data, subproject->qbsProjectData().allProducts())
|
||||||
toBuild << data.name();
|
toBuild << QbsProject::uniqueProductName(data);
|
||||||
|
|
||||||
buildProducts(m_editorProject, toBuild);
|
buildProducts(m_editorProject, toBuild);
|
||||||
}
|
}
|
||||||
|
@@ -63,39 +63,55 @@
|
|||||||
|
|
||||||
using namespace ProjectExplorer;
|
using namespace ProjectExplorer;
|
||||||
|
|
||||||
namespace {
|
namespace QbsProjectManager {
|
||||||
|
namespace Internal {
|
||||||
|
|
||||||
const char QBS_RC_PREFIX[] = "Qbs.RunConfiguration:";
|
const char QBS_RC_PREFIX[] = "Qbs.RunConfiguration:";
|
||||||
const char COMMAND_LINE_ARGUMENTS_KEY[] = "Qbs.RunConfiguration.CommandLineArguments";
|
const char COMMAND_LINE_ARGUMENTS_KEY[] = "Qbs.RunConfiguration.CommandLineArguments";
|
||||||
const char USE_TERMINAL_KEY[] = "Qbs.RunConfiguration.UseTerminal";
|
const char USE_TERMINAL_KEY[] = "Qbs.RunConfiguration.UseTerminal";
|
||||||
const char USER_WORKING_DIRECTORY_KEY[] = "Qbs.RunConfiguration.UserWorkingDirectory";
|
const char USER_WORKING_DIRECTORY_KEY[] = "Qbs.RunConfiguration.UserWorkingDirectory";
|
||||||
|
|
||||||
QString productFromId(Core::Id id)
|
static QString rcNameSeparator() { return QLatin1String("---Qbs.RC.NameSeparator---"); }
|
||||||
|
|
||||||
|
static Core::Id idFromProduct(const QbsProject *project, const qbs::ProductData &product)
|
||||||
{
|
{
|
||||||
return id.suffixAfter(QBS_RC_PREFIX);
|
QString id = QLatin1String(QBS_RC_PREFIX);
|
||||||
|
id.append(QbsProject::uniqueProductName(product)).append(rcNameSeparator())
|
||||||
|
.append(QbsProject::productDisplayName(project->qbsProject(), product));
|
||||||
|
return Core::Id::fromString(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
const qbs::ProductData findProduct(const qbs::ProjectData &pro, const QString &name)
|
static QString uniqueProductNameFromId(Core::Id id)
|
||||||
|
{
|
||||||
|
const QString suffix = id.suffixAfter(QBS_RC_PREFIX);
|
||||||
|
return suffix.left(suffix.indexOf(rcNameSeparator()));
|
||||||
|
}
|
||||||
|
|
||||||
|
static QString productDisplayNameFromId(Core::Id id)
|
||||||
|
{
|
||||||
|
const QString suffix = id.suffixAfter(QBS_RC_PREFIX);
|
||||||
|
const int sepPos = suffix.indexOf(rcNameSeparator());
|
||||||
|
if (sepPos == -1)
|
||||||
|
return suffix;
|
||||||
|
return suffix.mid(sepPos + rcNameSeparator().count());
|
||||||
|
}
|
||||||
|
|
||||||
|
const qbs::ProductData findProduct(const qbs::ProjectData &pro, const QString &uniqeName)
|
||||||
{
|
{
|
||||||
foreach (const qbs::ProductData &product, pro.allProducts()) {
|
foreach (const qbs::ProductData &product, pro.allProducts()) {
|
||||||
if (product.name() == name)
|
if (QbsProject::uniqueProductName(product) == uniqeName)
|
||||||
return product;
|
return product;
|
||||||
}
|
}
|
||||||
return qbs::ProductData();
|
return qbs::ProductData();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
namespace QbsProjectManager {
|
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
// QbsRunConfiguration:
|
// QbsRunConfiguration:
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
|
|
||||||
QbsRunConfiguration::QbsRunConfiguration(Target *parent, Core::Id id) :
|
QbsRunConfiguration::QbsRunConfiguration(Target *parent, Core::Id id) :
|
||||||
LocalApplicationRunConfiguration(parent, id),
|
LocalApplicationRunConfiguration(parent, id),
|
||||||
m_qbsProduct(productFromId(id)),
|
m_uniqueProductName(uniqueProductNameFromId(id)),
|
||||||
m_runMode(ApplicationLauncher::Gui),
|
m_runMode(ApplicationLauncher::Gui),
|
||||||
m_currentInstallStep(0),
|
m_currentInstallStep(0),
|
||||||
m_currentBuildStepList(0)
|
m_currentBuildStepList(0)
|
||||||
@@ -107,7 +123,7 @@ QbsRunConfiguration::QbsRunConfiguration(Target *parent, Core::Id id) :
|
|||||||
|
|
||||||
QbsRunConfiguration::QbsRunConfiguration(Target *parent, QbsRunConfiguration *source) :
|
QbsRunConfiguration::QbsRunConfiguration(Target *parent, QbsRunConfiguration *source) :
|
||||||
LocalApplicationRunConfiguration(parent, source),
|
LocalApplicationRunConfiguration(parent, source),
|
||||||
m_qbsProduct(source->m_qbsProduct),
|
m_uniqueProductName(source->m_uniqueProductName),
|
||||||
m_commandLineArguments(source->m_commandLineArguments),
|
m_commandLineArguments(source->m_commandLineArguments),
|
||||||
m_runMode(source->m_runMode),
|
m_runMode(source->m_runMode),
|
||||||
m_userWorkingDirectory(source->m_userWorkingDirectory),
|
m_userWorkingDirectory(source->m_userWorkingDirectory),
|
||||||
@@ -217,7 +233,7 @@ void QbsRunConfiguration::installStepToBeRemoved(int pos)
|
|||||||
QString QbsRunConfiguration::executable() const
|
QString QbsRunConfiguration::executable() const
|
||||||
{
|
{
|
||||||
QbsProject *pro = static_cast<QbsProject *>(target()->project());
|
QbsProject *pro = static_cast<QbsProject *>(target()->project());
|
||||||
const qbs::ProductData product = findProduct(pro->qbsProjectData(), m_qbsProduct);
|
const qbs::ProductData product = findProduct(pro->qbsProjectData(), m_uniqueProductName);
|
||||||
|
|
||||||
if (!product.isValid() || !pro->qbsProject().isValid())
|
if (!product.isValid() || !pro->qbsProject().isValid())
|
||||||
return QString();
|
return QString();
|
||||||
@@ -233,7 +249,7 @@ ApplicationLauncher::Mode QbsRunConfiguration::runMode() const
|
|||||||
bool QbsRunConfiguration::isConsoleApplication() const
|
bool QbsRunConfiguration::isConsoleApplication() const
|
||||||
{
|
{
|
||||||
QbsProject *pro = static_cast<QbsProject *>(target()->project());
|
QbsProject *pro = static_cast<QbsProject *>(target()->project());
|
||||||
const qbs::ProductData product = findProduct(pro->qbsProjectData(), m_qbsProduct);
|
const qbs::ProductData product = findProduct(pro->qbsProjectData(), m_uniqueProductName);
|
||||||
foreach (const qbs::TargetArtifact &ta, product.targetArtifacts()) {
|
foreach (const qbs::TargetArtifact &ta, product.targetArtifacts()) {
|
||||||
if (ta.isExecutable())
|
if (ta.isExecutable())
|
||||||
return !ta.properties().getProperty(QLatin1String("consoleApplication")).toBool();
|
return !ta.properties().getProperty(QLatin1String("consoleApplication")).toBool();
|
||||||
@@ -300,7 +316,7 @@ void QbsRunConfiguration::addToBaseEnvironment(Utils::Environment &env) const
|
|||||||
{
|
{
|
||||||
QbsProject *project = static_cast<QbsProject *>(target()->project());
|
QbsProject *project = static_cast<QbsProject *>(target()->project());
|
||||||
if (project) {
|
if (project) {
|
||||||
const qbs::ProductData product = findProduct(project->qbsProjectData(), m_qbsProduct);
|
const qbs::ProductData product = findProduct(project->qbsProjectData(), m_uniqueProductName);
|
||||||
if (product.isValid()) {
|
if (product.isValid()) {
|
||||||
qbs::RunEnvironment qbsRunEnv = project->qbsProject().getRunEnvironment(product, installOptions(),
|
qbs::RunEnvironment qbsRunEnv = project->qbsProject().getRunEnvironment(product, installOptions(),
|
||||||
env.toProcessEnvironment(), QbsManager::settings());
|
env.toProcessEnvironment(), QbsManager::settings());
|
||||||
@@ -318,17 +334,15 @@ void QbsRunConfiguration::addToBaseEnvironment(Utils::Environment &env) const
|
|||||||
env.prependOrSetLibrarySearchPath(qtVersion->qmakeProperty("QT_INSTALL_LIBS"));
|
env.prependOrSetLibrarySearchPath(qtVersion->qmakeProperty("QT_INSTALL_LIBS"));
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QbsRunConfiguration::qbsProduct() const
|
QString QbsRunConfiguration::uniqueProductName() const
|
||||||
{
|
{
|
||||||
return m_qbsProduct;
|
return m_uniqueProductName;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QbsRunConfiguration::defaultDisplayName()
|
QString QbsRunConfiguration::defaultDisplayName()
|
||||||
{
|
{
|
||||||
QString defaultName;
|
QString defaultName = productDisplayNameFromId(id());
|
||||||
if (!m_qbsProduct.isEmpty())
|
if (defaultName.isEmpty())
|
||||||
defaultName = m_qbsProduct;
|
|
||||||
else
|
|
||||||
defaultName = tr("Qbs Run Configuration");
|
defaultName = tr("Qbs Run Configuration");
|
||||||
return defaultName;
|
return defaultName;
|
||||||
}
|
}
|
||||||
@@ -545,7 +559,7 @@ bool QbsRunConfigurationFactory::canCreate(Target *parent, Core::Id id) const
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
QbsProject *project = static_cast<QbsProject *>(parent->project());
|
QbsProject *project = static_cast<QbsProject *>(parent->project());
|
||||||
return findProduct(project->qbsProjectData(), productFromId(id)).isValid();
|
return findProduct(project->qbsProjectData(), uniqueProductNameFromId(id)).isValid();
|
||||||
}
|
}
|
||||||
|
|
||||||
RunConfiguration *QbsRunConfigurationFactory::doCreate(Target *parent, Core::Id id)
|
RunConfiguration *QbsRunConfigurationFactory::doCreate(Target *parent, Core::Id id)
|
||||||
@@ -591,7 +605,7 @@ QList<Core::Id> QbsRunConfigurationFactory::availableCreationIds(Target *parent,
|
|||||||
|
|
||||||
foreach (const qbs::ProductData &product, project->qbsProjectData().allProducts()) {
|
foreach (const qbs::ProductData &product, project->qbsProjectData().allProducts()) {
|
||||||
if (product.isRunnable() && product.isEnabled())
|
if (product.isRunnable() && product.isEnabled())
|
||||||
result << Core::Id::fromString(QString::fromLatin1(QBS_RC_PREFIX) + product.name());
|
result << idFromProduct(project, product);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@@ -599,7 +613,7 @@ QList<Core::Id> QbsRunConfigurationFactory::availableCreationIds(Target *parent,
|
|||||||
|
|
||||||
QString QbsRunConfigurationFactory::displayNameForId(Core::Id id) const
|
QString QbsRunConfigurationFactory::displayNameForId(Core::Id id) const
|
||||||
{
|
{
|
||||||
return productFromId(id);
|
return productDisplayNameFromId(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QbsRunConfigurationFactory::canHandle(Target *t) const
|
bool QbsRunConfigurationFactory::canHandle(Target *t) const
|
||||||
|
@@ -89,7 +89,7 @@ public:
|
|||||||
|
|
||||||
void addToBaseEnvironment(Utils::Environment &env) const;
|
void addToBaseEnvironment(Utils::Environment &env) const;
|
||||||
|
|
||||||
QString qbsProduct() const;
|
QString uniqueProductName() const;
|
||||||
bool isConsoleApplication() const;
|
bool isConsoleApplication() const;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@@ -120,7 +120,7 @@ private:
|
|||||||
|
|
||||||
void updateTarget();
|
void updateTarget();
|
||||||
|
|
||||||
QString m_qbsProduct;
|
QString m_uniqueProductName;
|
||||||
QString m_commandLineArguments;
|
QString m_commandLineArguments;
|
||||||
|
|
||||||
// Cached startup sub project information
|
// Cached startup sub project information
|
||||||
|
Reference in New Issue
Block a user