diff --git a/src/shared/proparser/qmakeevaluator.cpp b/src/shared/proparser/qmakeevaluator.cpp index 1cf282da435..3741e9cbc45 100644 --- a/src/shared/proparser/qmakeevaluator.cpp +++ b/src/shared/proparser/qmakeevaluator.cpp @@ -1051,10 +1051,8 @@ QStringList QMakeEvaluator::qmakeMkspecPaths() const QStringList ret; const QString concat = QLatin1String("/mkspecs"); - QString qmakepath = m_option->getEnv(QLatin1String("QMAKEPATH")); - if (!qmakepath.isEmpty()) - foreach (const QString &it, qmakepath.split(m_option->dirlist_sep)) - ret << QDir::cleanPath(it) + concat; + foreach (const QString &it, m_option->getPathListEnv(QLatin1String("QMAKEPATH"))) + ret << it + concat; QString builtIn = propertyValue(QLatin1String("QT_INSTALL_DATA"), false) + concat; if (!ret.contains(builtIn)) @@ -1091,10 +1089,8 @@ QStringList QMakeEvaluator::qmakeFeaturePaths() const QStringList feature_roots; - QString mkspec_path = m_option->getEnv(QLatin1String("QMAKEFEATURES")); - if (!mkspec_path.isEmpty()) - foreach (const QString &f, mkspec_path.split(m_option->dirlist_sep)) - feature_roots += resolvePath(f); + foreach (const QString &f, m_option->getPathListEnv(QLatin1String("QMAKEFEATURES"))) + feature_roots += resolvePath(f); feature_roots += propertyValue(QLatin1String("QMAKEFEATURES"), false).split( m_option->dirlist_sep, QString::SkipEmptyParts); @@ -1105,14 +1101,10 @@ QStringList QMakeEvaluator::qmakeFeaturePaths() const feature_roots << (path + concat_it); } - QString qmakepath = m_option->getEnv(QLatin1String("QMAKEPATH")); - if (!qmakepath.isNull()) { - const QStringList lst = qmakepath.split(m_option->dirlist_sep); - foreach (const QString &item, lst) { - QString citem = resolvePath(item); - foreach (const QString &concat_it, concat) - feature_roots << (citem + mkspecs_concat + concat_it); - } + foreach (const QString &item, m_option->getPathListEnv(QLatin1String("QMAKEPATH"))) { + QString citem = resolvePath(item); + foreach (const QString &concat_it, concat) + feature_roots << (citem + mkspecs_concat + concat_it); } if (!m_option->qmakespec.isEmpty()) { diff --git a/src/shared/proparser/qmakeglobals.cpp b/src/shared/proparser/qmakeglobals.cpp index dad1f5af196..25595125e19 100644 --- a/src/shared/proparser/qmakeglobals.cpp +++ b/src/shared/proparser/qmakeglobals.cpp @@ -147,6 +147,19 @@ QString QMakeGlobals::getEnv(const QString &var) const return QString::fromLocal8Bit(qgetenv(var.toLocal8Bit().constData())); } +QStringList QMakeGlobals::getPathListEnv(const QString &var) const +{ + QStringList ret; + QString val = getEnv(var); + if (!val.isEmpty()) { + QStringList vals = val.split(dirlist_sep); + ret.reserve(vals.length()); + foreach (const QString &it, vals) + ret << QDir::cleanPath(it); + } + return ret; +} + #ifdef PROEVALUATOR_INIT_PROPS bool QMakeGlobals::initProperties(const QString &qmake) { diff --git a/src/shared/proparser/qmakeglobals.h b/src/shared/proparser/qmakeglobals.h index 68144871ff7..7fa3b27da82 100644 --- a/src/shared/proparser/qmakeglobals.h +++ b/src/shared/proparser/qmakeglobals.h @@ -75,6 +75,7 @@ public: private: QString getEnv(const QString &) const; + QStringList getPathListEnv(const QString &var) const; QHash base_valuemap; // Cached results of qmake.conf, .qmake.cache & default_pre.prf ProFunctionDefs base_functions;