diff options
Diffstat (limited to 'qmake/generators/win32/winmakefile.cpp')
-rw-r--r-- | qmake/generators/win32/winmakefile.cpp | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index bda035e023..cac63ed932 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the qmake application of the Qt Toolkit. @@ -382,7 +382,7 @@ void Win32MakefileGenerator::processRcFileVar() if (Option::qmake_mode == Option::QMAKE_GENERATE_NOTHING) return; - if (((!project->values("VERSION").isEmpty()) + if (((!project->values("VERSION").isEmpty() || !project->values("RC_ICONS").isEmpty()) && project->values("RC_FILE").isEmpty() && project->values("RES_FILE").isEmpty() && !project->isActiveConfig("no_generated_target_info") @@ -392,11 +392,15 @@ void Win32MakefileGenerator::processRcFileVar() QByteArray rcString; QTextStream ts(&rcString, QFile::WriteOnly); - QStringList vers = project->first("VERSION").toQString().split("."); + QStringList vers = project->first("VERSION").toQString().split(".", QString::SkipEmptyParts); for (int i = vers.size(); i < 4; i++) vers += "0"; QString versionString = vers.join('.'); + QStringList rcIcons; + foreach (const ProString &icon, project->values("RC_ICONS")) + rcIcons.append(fileFixify(icon.toQString(), FileFixifyAbsolute)); + QString companyName; if (!project->values("QMAKE_TARGET_COMPANY").isEmpty()) companyName = project->values("QMAKE_TARGET_COMPANY").join(' '); @@ -425,6 +429,11 @@ void Win32MakefileGenerator::processRcFileVar() ts << "# include <winver.h>" << endl; ts << "# endif" << endl; ts << endl; + if (!rcIcons.isEmpty()) { + for (int i = 0; i < rcIcons.size(); ++i) + ts << QString("IDI_ICON%1\tICON\tDISCARDABLE\t%2").arg(i + 1).arg(cQuoted(rcIcons[i])) << endl; + ts << endl; + } ts << "VS_VERSION_INFO VERSIONINFO" << endl; ts << "\tFILEVERSION " << QString(versionString).replace(".", ",") << endl; ts << "\tPRODUCTVERSION " << QString(versionString).replace(".", ",") << endl; @@ -825,7 +834,7 @@ QString Win32MakefileGenerator::defaultInstall(const QString &t) if(slsh != -1) dst_prl = dst_prl.right(dst_prl.length() - slsh - 1); dst_prl = filePrefixRoot(root, targetdir + dst_prl); - ret += "-$(INSTALL_FILE) \"" + project->first("QMAKE_INTERNAL_PRL_FILE") + "\" \"" + dst_prl + "\""; + ret += installMetaFile(ProKey("QMAKE_PRL_INSTALL_REPLACE"), project->first("QMAKE_INTERNAL_PRL_FILE").toQString(), dst_prl); if(!uninst.isEmpty()) uninst.append("\n\t"); uninst.append("-$(DEL_FILE) \"" + dst_prl + "\""); @@ -842,22 +851,7 @@ QString Win32MakefileGenerator::defaultInstall(const QString &t) } if(!ret.isEmpty()) ret += "\n\t"; - const ProKey replace_rule("QMAKE_PKGCONFIG_INSTALL_REPLACE"); - if (project->isEmpty(replace_rule) - || project->isActiveConfig("no_sed_meta_install") - || project->isEmpty("QMAKE_STREAM_EDITOR")) { - ret += "-$(INSTALL_FILE) \"" + pkgConfigFileName(true) + "\" \"" + dst_pc + "\""; - } else { - ret += "-$(SED)"; - const ProStringList &replace_rules = project->values(replace_rule); - for (int r = 0; r < replace_rules.size(); ++r) { - const ProString match = project->first(ProKey(replace_rules.at(r) + ".match")), - replace = project->first(ProKey(replace_rules.at(r) + ".replace")); - if (!match.isEmpty() /*&& match != replace*/) - ret += " -e \"s," + match + "," + replace + ",g\""; - } - ret += " \"" + pkgConfigFileName(true) + "\" >\"" + dst_pc + "\""; - } + ret += installMetaFile(ProKey("QMAKE_PKGCONFIG_INSTALL_REPLACE"), pkgConfigFileName(true), dst_pc); if(!uninst.isEmpty()) uninst.append("\n\t"); uninst.append("-$(DEL_FILE) \"" + dst_pc + "\""); @@ -902,4 +896,14 @@ QString Win32MakefileGenerator::escapeFilePath(const QString &path) const return ret; } +QString Win32MakefileGenerator::cQuoted(const QString &str) +{ + QString ret = str; + ret.replace(QLatin1Char('"'), QStringLiteral("\\\"")); + ret.replace(QLatin1Char('\\'), QStringLiteral("\\\\")); + ret.prepend(QLatin1Char('"')); + ret.append(QLatin1Char('"')); + return ret; +} + QT_END_NAMESPACE |