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>
This commit is contained in:
Daniel Teske
2013-01-17 15:03:41 +01:00
committed by Tobias Hunger
parent c709dcd329
commit 4fd25854de
4 changed files with 135 additions and 49 deletions

View File

@@ -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));