diff options
author | Daniel Teske <daniel.teske@digia.com> | 2013-01-17 15:03:41 +0100 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@digia.com> | 2013-01-17 16:54:31 +0100 |
commit | 4fd25854de521560d41bf3cb123dd3fd2b36a6a8 (patch) | |
tree | d371b01e071e72b23dd62c0ddd94f016c2eea3e3 | |
parent | c709dcd3294062bb44ba1e77b3e4719e22bf73f8 (diff) | |
download | qt-creator-4fd25854de521560d41bf3cb123dd3fd2b36a6a8.tar.gz |
Move QtProjectExpander to ProjectExplorer
The cmake plugin needs the class, too. Also add a explicit projectName
parameter to it, since it differs how to extract that from the path.
Change-Id: Ic3d37b3a12ad73f3c7f898d27ad0e85629c38839
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
-rw-r--r-- | src/plugins/projectexplorer/projectexplorer.pro | 6 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectmacroexpander.cpp | 74 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projectmacroexpander.h | 54 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/qt4project.cpp | 50 |
4 files changed, 135 insertions, 49 deletions
diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro index f9c74e5019..e74a1b3888 100644 --- a/src/plugins/projectexplorer/projectexplorer.pro +++ b/src/plugins/projectexplorer/projectexplorer.pro @@ -128,7 +128,8 @@ HEADERS += projectexplorer.h \ devicesupport/sshdeviceprocesslist.h \ deploymentdata.h \ buildtargetinfo.h \ - customtoolchain.h + customtoolchain.h \ + projectmacroexpander.h SOURCES += projectexplorer.cpp \ abi.cpp \ @@ -236,7 +237,8 @@ SOURCES += projectexplorer.cpp \ devicesupport/localprocesslist.cpp \ devicesupport/sshdeviceprocesslist.cpp \ deployablefile.cpp \ - customtoolchain.cpp + customtoolchain.cpp \ + projectmacroexpander.cpp FORMS += processstep.ui \ editorsettingspropertiespage.ui \ diff --git a/src/plugins/projectexplorer/projectmacroexpander.cpp b/src/plugins/projectexplorer/projectmacroexpander.cpp new file mode 100644 index 0000000000..22a03bbf56 --- /dev/null +++ b/src/plugins/projectexplorer/projectmacroexpander.cpp @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "projectmacroexpander.h" +#include "kit.h" +#include "projectexplorerconstants.h" + +#include <coreplugin/variablemanager.h> + +using namespace ProjectExplorer; + +ProjectExpander::ProjectExpander(const QString &projectFilePath, const QString &projectName, + const Kit *k, const QString &bcName) + : m_projectFile(projectFilePath), m_projectName(projectName), m_kit(k), m_bcName(bcName) +{ } + +bool ProjectExpander::resolveMacro(const QString &name, QString *ret) +{ + QString result; + bool found = false; + if (name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTPROJECT_NAME)) { + result = m_projectName; + found = true; + } else if (name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTPROJECT_PATH)) { + result = m_projectFile.absolutePath(); + found = true; + } else if (name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTPROJECT_FILEPATH)) { + result = m_projectFile.absoluteFilePath(); + found = true; + } else if (m_kit && name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTKIT_NAME)) { + result = m_kit->displayName(); + found = true; + } else if (m_kit && name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTKIT_FILESYSTEMNAME)) { + result = m_kit->fileSystemFriendlyName(); + found = true; + } else if (m_kit && name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTKIT_ID)) { + result = m_kit->id().toString(); + found = true; + } else if (name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTBUILD_NAME)) { + result = m_bcName; + found = true; + } else { + result = Core::VariableManager::instance()->value(name.toUtf8(), &found); + } + if (ret) + *ret = result; + return found; +} diff --git a/src/plugins/projectexplorer/projectmacroexpander.h b/src/plugins/projectexplorer/projectmacroexpander.h new file mode 100644 index 0000000000..51a0924ed9 --- /dev/null +++ b/src/plugins/projectexplorer/projectmacroexpander.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef PROJECTMACROEXPANDER_H +#define PROJECTMACROEXPANDER_H + +#include "projectexplorer_export.h" +#include <utils/stringutils.h> +#include <QFileInfo> + +namespace ProjectExplorer { +class Kit; + +class PROJECTEXPLORER_EXPORT ProjectExpander : public Utils::AbstractQtcMacroExpander +{ +public: + ProjectExpander(const QString &projectFilePath, const QString &projectName, const Kit *k, const QString &bcName); + bool resolveMacro(const QString &name, QString *ret); + +private: + QFileInfo m_projectFile; + QString m_projectName; + const Kit *m_kit; + QString m_bcName; +}; +} // namespace + +#endif // PROJECTMACROEXPANDER_H diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 71427534db..208af8daf5 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -59,6 +59,7 @@ #include <projectexplorer/kitinformation.h> #include <projectexplorer/projectexplorer.h> #include <projectexplorer/projectexplorerconstants.h> +#include <projectexplorer/projectmacroexpander.h> #include <utils/qtcassert.h> #include <qtsupport/customexecutablerunconfiguration.h> #include <qtsupport/qmldumptool.h> @@ -99,52 +100,6 @@ Qt4BuildConfiguration *enableActiveQt4BuildConfiguration(ProjectExplorer::Target return bc; } -class Qt4ProjectExpander : public Utils::AbstractQtcMacroExpander -{ -public: - Qt4ProjectExpander(const QString &proFilePath, const Kit *k, const QString &bcName) : - m_proFile(proFilePath), m_kit(k), m_bcName(bcName) - { } - - bool resolveMacro(const QString &name, QString *ret) - { - QString result; - bool found = false; - if (name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTPROJECT_NAME)) { - result = m_proFile.baseName(); - found = true; - } else if (name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTPROJECT_PATH)) { - result = m_proFile.absolutePath(); - found = true; - } else if (name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTPROJECT_FILEPATH)) { - result = m_proFile.absoluteFilePath(); - found = true; - } else if (m_kit && name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTKIT_NAME)) { - result = m_kit->displayName(); - found = true; - } else if (m_kit && name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTKIT_FILESYSTEMNAME)) { - result = m_kit->fileSystemFriendlyName(); - found = true; - } else if (m_kit && name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTKIT_ID)) { - result = m_kit->id().toString(); - found = true; - } else if (name == QLatin1String(ProjectExplorer::Constants::VAR_CURRENTBUILD_NAME)) { - result = m_bcName; - found = true; - } else { - result = Core::VariableManager::instance()->value(name.toUtf8(), &found); - } - if (ret) - *ret = result; - return found; - } - -private: - QFileInfo m_proFile; - const Kit *m_kit; - QString m_bcName; -}; - } // namespace namespace Qt4ProjectManager { @@ -1450,7 +1405,8 @@ QString Qt4Project::shadowBuildDirectory(const QString &proFilePath, const Kit * if (version && !version->supportsShadowBuilds()) return info.absolutePath(); - Qt4ProjectExpander expander(proFilePath, k, suffix); + const QString projectName = QFileInfo(proFilePath).completeBaseName(); + ProjectExplorer::ProjectExpander expander(proFilePath, projectName, k, suffix); QDir projectDir = QDir(projectDirectory(proFilePath)); QString buildPath = Utils::expandMacros(Core::DocumentManager::buildDirectory(), &expander); return QDir::cleanPath(projectDir.absoluteFilePath(buildPath)); |