summaryrefslogtreecommitdiffstats
path: root/qmake/generators/win32/msvc_vcproj.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qmake/generators/win32/msvc_vcproj.cpp')
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp225
1 files changed, 113 insertions, 112 deletions
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index 9ca91f01c5..b27b638d42 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -282,10 +282,10 @@ bool VcprojGenerator::writeProjectMakefile()
mergedProjects.at(0)->vcProject.Name ==
mergedProjects.at(1)->vcProject.Name)
mergedProjects.at(0)->writePrlFile();
- mergedProject.Name = project->first("QMAKE_PROJECT_NAME");
+ mergedProject.Name = project->first("QMAKE_PROJECT_NAME").toQString();
mergedProject.Version = mergedProjects.at(0)->vcProject.Version;
- mergedProject.ProjectGUID = project->isEmpty("QMAKE_UUID") ? getProjectUUID().toString().toUpper() : project->first("QMAKE_UUID");
- mergedProject.Keyword = project->first("VCPROJ_KEYWORD");
+ mergedProject.ProjectGUID = project->isEmpty("QMAKE_UUID") ? getProjectUUID().toString().toUpper() : project->first("QMAKE_UUID").toQString();
+ mergedProject.Keyword = project->first("VCPROJ_KEYWORD").toQString();
mergedProject.SccProjectName = mergedProjects.at(0)->vcProject.SccProjectName;
mergedProject.SccLocalPath = mergedProjects.at(0)->vcProject.SccLocalPath;
mergedProject.PlatformName = mergedProjects.at(0)->vcProject.PlatformName;
@@ -321,11 +321,11 @@ QUuid VcprojGenerator::getProjectUUID(const QString &filename)
bool validUUID = true;
// Read GUID from variable-space
- QUuid uuid = project->first("GUID");
+ QUuid uuid = project->first("GUID").toQString();
// If none, create one based on the MD5 of absolute project path
if(uuid.isNull() || !filename.isEmpty()) {
- QString abspath = Option::fixPathToLocalOS(filename.isEmpty()?project->first("QMAKE_MAKEFILE"):filename);
+ QString abspath = Option::fixPathToLocalOS(filename.isEmpty()?project->first("QMAKE_MAKEFILE").toQString():filename);
QByteArray digest = QCryptographicHash::hash(abspath.toUtf8(), QCryptographicHash::Md5);
memcpy((unsigned char*)(&uuid), digest.constData(), sizeof(QUuid));
validUUID = !uuid.isNull();
@@ -342,7 +342,7 @@ QUuid VcprojGenerator::getProjectUUID(const QString &filename)
}
// Store GUID in variable-space
- project->values("GUID") = QStringList(uuid.toString().toUpper());
+ project->values("GUID") = ProStringList(uuid.toString().toUpper());
return uuid;
}
@@ -379,24 +379,26 @@ QUuid VcprojGenerator::increaseUUID(const QUuid &id)
QStringList VcprojGenerator::collectSubDirs(QMakeProject *proj)
{
QStringList subdirs;
- QStringList tmp_proj_subdirs = proj->values("SUBDIRS");
+ const ProStringList &tmp_proj_subdirs = proj->values("SUBDIRS");
for(int x = 0; x < tmp_proj_subdirs.size(); ++x) {
- QString tmpdir = tmp_proj_subdirs.at(x);
- const QString tmpdirConfig = tmpdir + QStringLiteral(".CONFIG");
+ ProString tmpdir = tmp_proj_subdirs.at(x);
+ const ProKey tmpdirConfig(tmpdir + ".CONFIG");
if (!proj->isEmpty(tmpdirConfig)) {
- const QStringList config = proj->values(tmpdirConfig);
+ const ProStringList config = proj->values(tmpdirConfig);
if (config.contains(QStringLiteral("no_default_target")))
continue; // Ignore this sub-dir
}
- if(!proj->isEmpty(tmpdir + ".file")) {
- if(!proj->isEmpty(tmpdir + ".subdir"))
+ const ProKey fkey(tmpdir + ".file");
+ const ProKey skey(tmpdir + ".subdir");
+ if (!proj->isEmpty(fkey)) {
+ if (!proj->isEmpty(skey))
warn_msg(WarnLogic, "Cannot assign both file and subdir for subdir %s",
tmpdir.toLatin1().constData());
- tmpdir = proj->first(tmpdir + ".file");
- } else if(!proj->isEmpty(tmpdir + ".subdir")) {
- tmpdir = proj->first(tmpdir + ".subdir");
+ tmpdir = proj->first(fkey);
+ } else if (!proj->isEmpty(skey)) {
+ tmpdir = proj->first(skey);
}
- subdirs += tmpdir;
+ subdirs += tmpdir.toQString();
}
return subdirs;
}
@@ -516,10 +518,10 @@ void VcprojGenerator::writeSubDirs(QTextStream &t)
VcsolutionDepend *newDep = new VcsolutionDepend;
newDep->vcprojFile = vcprojDir + Option::dir_sep + vcproj;
- newDep->orig_target = unescapeFilePath(tmp_proj.first("QMAKE_ORIG_TARGET"));
- newDep->target = tmp_proj.first("MSVCPROJ_TARGET").section(Option::dir_sep, -1);
+ newDep->orig_target = unescapeFilePath(tmp_proj.first("QMAKE_ORIG_TARGET").toQString());
+ newDep->target = tmp_proj.first("MSVCPROJ_TARGET").toQString().section(Option::dir_sep, -1);
newDep->targetType = tmp_vcproj.projectTarget;
- newDep->uuid = tmp_proj.isEmpty("QMAKE_UUID") ? getProjectUUID(Option::fixPathToLocalOS(vcprojDir + QDir::separator() + vcproj)).toString().toUpper(): tmp_proj.first("QMAKE_UUID");
+ newDep->uuid = tmp_proj.isEmpty("QMAKE_UUID") ? getProjectUUID(Option::fixPathToLocalOS(vcprojDir + QDir::separator() + vcproj)).toString().toUpper(): tmp_proj.first("QMAKE_UUID").toQString();
// We want to store it as the .lib name.
if(newDep->target.endsWith(".dll"))
@@ -530,13 +532,13 @@ void VcprojGenerator::writeSubDirs(QTextStream &t)
newDep->dependencies << "idc.exe";
// All extra compilers which has valid input are considered dependencies
- const QStringList &quc = tmp_proj.values("QMAKE_EXTRA_COMPILERS");
- for(QStringList::ConstIterator it = quc.constBegin(); it != quc.constEnd(); ++it) {
- const QStringList &invar = tmp_proj.values(*it + ".input");
- for(QStringList::ConstIterator iit = invar.constBegin(); iit != invar.constEnd(); ++iit) {
- const QStringList fileList = tmp_proj.values(*iit);
+ const ProStringList &quc = tmp_proj.values("QMAKE_EXTRA_COMPILERS");
+ for (ProStringList::ConstIterator it = quc.constBegin(); it != quc.constEnd(); ++it) {
+ const ProStringList &invar = tmp_proj.values(ProKey(*it + ".input"));
+ for (ProStringList::ConstIterator iit = invar.constBegin(); iit != invar.constEnd(); ++iit) {
+ const ProStringList &fileList = tmp_proj.values((*iit).toKey());
if (!fileList.isEmpty()) {
- const QStringList &cmdsParts = tmp_proj.values(*it + ".commands");
+ const QStringList &cmdsParts = tmp_proj.values(ProKey(*it + ".commands")).toQStringList();
bool startOfLine = true;
foreach(QString cmd, cmdsParts) {
if (!startOfLine) {
@@ -563,14 +565,14 @@ void VcprojGenerator::writeSubDirs(QTextStream &t)
}
// Add all unknown libs to the deps
- QStringList where = QStringList() << "QMAKE_LIBS" << "QMAKE_LIBS_PRIVATE";
+ ProStringList where = ProStringList() << "QMAKE_LIBS" << "QMAKE_LIBS_PRIVATE";
if(!tmp_proj.isEmpty("QMAKE_INTERNAL_PRL_LIBS"))
where = tmp_proj.values("QMAKE_INTERNAL_PRL_LIBS");
- for (QStringList::ConstIterator wit = where.begin();
+ for (ProStringList::ConstIterator wit = where.begin();
wit != where.end(); ++wit) {
- const QStringList &l = tmp_proj.values(*wit);
- for (QStringList::ConstIterator it = l.begin(); it != l.end(); ++it) {
- QString opt = (*it);
+ const ProStringList &l = tmp_proj.values((*wit).toKey());
+ for (ProStringList::ConstIterator it = l.begin(); it != l.end(); ++it) {
+ QString opt = (*it).toQString();
if(!opt.startsWith("/") && // Not a switch
opt != newDep->target && // Not self
opt != "opengl32.lib" && // We don't care about these libs
@@ -700,7 +702,7 @@ void VcprojGenerator::init()
processVars();
if(!project->values("VERSION").isEmpty()) {
- QString version = project->values("VERSION")[0];
+ QString version = project->values("VERSION")[0].toQString();
int firstDot = version.indexOf(".");
QString major = version.left(firstDot);
QString minor = version.right(version.length() - firstDot - 1);
@@ -724,21 +726,21 @@ void VcprojGenerator::init()
}
// Setup PCH variables
- precompH = project->first("PRECOMPILED_HEADER");
- precompCPP = project->first("PRECOMPILED_SOURCE");
+ precompH = project->first("PRECOMPILED_HEADER").toQString();
+ precompCPP = project->first("PRECOMPILED_SOURCE").toQString();
usePCH = !precompH.isEmpty() && project->isActiveConfig("precompile_header");
if (usePCH) {
precompHFilename = fileInfo(precompH).fileName();
// Created files
- QString origTarget = unescapeFilePath(project->first("QMAKE_ORIG_TARGET"));
+ QString origTarget = unescapeFilePath(project->first("QMAKE_ORIG_TARGET").toQString());
precompObj = origTarget + Option::obj_ext;
precompPch = origTarget + ".pch";
// Add PRECOMPILED_HEADER to HEADERS
if (!project->values("HEADERS").contains(precompH))
project->values("HEADERS") += precompH;
// Return to variable pool
- project->values("PRECOMPILED_OBJECT") = QStringList(precompObj);
- project->values("PRECOMPILED_PCH") = QStringList(precompPch);
+ project->values("PRECOMPILED_OBJECT") = ProStringList(precompObj);
+ project->values("PRECOMPILED_PCH") = ProStringList(precompPch);
autogenPrecompCPP = precompCPP.isEmpty() && project->isActiveConfig("autogen_precompile_source");
if (autogenPrecompCPP) {
@@ -752,24 +754,23 @@ void VcprojGenerator::init()
// Add all input files for a custom compiler into a map for uniqueness,
// unless the compiler is configure as a combined stage, then use the first one
- const QStringList &quc = project->values("QMAKE_EXTRA_COMPILERS");
- for(QStringList::ConstIterator it = quc.constBegin(); it != quc.constEnd(); ++it) {
- const QStringList &invar = project->values(*it + ".input");
- const QString compiler_out = project->first((*it) + ".output");
- for(QStringList::ConstIterator iit = invar.constBegin(); iit != invar.constEnd(); ++iit) {
- QStringList fileList = project->values(*iit);
+ foreach (const ProString &quc, project->values("QMAKE_EXTRA_COMPILERS")) {
+ const ProStringList &invar = project->values(ProKey(quc + ".input"));
+ const QString compiler_out = project->first(ProKey(quc + ".output")).toQString();
+ for (ProStringList::ConstIterator iit = invar.constBegin(); iit != invar.constEnd(); ++iit) {
+ ProStringList fileList = project->values((*iit).toKey());
if (!fileList.isEmpty()) {
- if (project->values((*it) + ".CONFIG").indexOf("combine") != -1)
- fileList = QStringList(fileList.first());
- for(QStringList::ConstIterator fit = fileList.constBegin(); fit != fileList.constEnd(); ++fit) {
- QString file = (*fit);
- if (verifyExtraCompiler((*it), file)) {
+ if (project->values(ProKey(quc + ".CONFIG")).indexOf("combine") != -1)
+ fileList.erase(fileList.begin() + 1, fileList.end());
+ for (ProStringList::ConstIterator fit = fileList.constBegin(); fit != fileList.constEnd(); ++fit) {
+ QString file = (*fit).toQString();
+ if (verifyExtraCompiler(quc, file)) {
if (!hasBuiltinCompiler(file)) {
- extraCompilerSources[file] += *it;
+ extraCompilerSources[file] += quc.toQString();
} else {
QString out = Option::fixPathToTargetOS(replaceExtraCompilerVariables(
compiler_out, file, QString()), false);
- extraCompilerSources[out] += *it;
+ extraCompilerSources[out] += quc.toQString();
extraCompilerOutputs[out] = QStringList(file); // Can only have one
}
}
@@ -822,7 +823,7 @@ void VcprojGenerator::initProject()
initExtraCompilerOutputs();
// Own elements -----------------------------
- vcProject.Name = unescapeFilePath(project->first("QMAKE_ORIG_TARGET"));
+ vcProject.Name = unescapeFilePath(project->first("QMAKE_ORIG_TARGET").toQString());
switch(which_dotnet_version()) {
case NET2010:
vcProject.Version = "10.00";
@@ -847,15 +848,15 @@ void VcprojGenerator::initProject()
break;
}
- vcProject.Keyword = project->first("VCPROJ_KEYWORD");
+ vcProject.Keyword = project->first("VCPROJ_KEYWORD").toQString();
if (project->isHostBuild() || project->isEmpty("CE_SDK") || project->isEmpty("CE_ARCH")) {
vcProject.PlatformName = (is64Bit ? "x64" : "Win32");
} else {
vcProject.PlatformName = project->values("CE_SDK").join(" ") + " (" + project->first("CE_ARCH") + ")";
}
// These are not used by Qt, but may be used by customers
- vcProject.SccProjectName = project->first("SCCPROJECTNAME");
- vcProject.SccLocalPath = project->first("SCCLOCALPATH");
+ vcProject.SccProjectName = project->first("SCCPROJECTNAME").toQString();
+ vcProject.SccLocalPath = project->first("SCCLOCALPATH").toQString();
vcProject.flat_files = project->isActiveConfig("flat");
}
@@ -882,7 +883,7 @@ void VcprojGenerator::initConfiguration()
initIDLTool();
// Own elements -----------------------------
- QString temp = project->first("BuildBrowserInformation");
+ ProString temp = project->first("BuildBrowserInformation");
switch (projectTarget) {
case SharedLib:
conf.ConfigurationType = typeDynamicLibrary;
@@ -896,17 +897,17 @@ void VcprojGenerator::initConfiguration()
break;
}
- conf.OutputDirectory = project->first("DESTDIR");
+ conf.OutputDirectory = project->first("DESTDIR").toQString();
if (conf.OutputDirectory.isEmpty())
conf.OutputDirectory = ".\\";
if (!conf.OutputDirectory.endsWith("\\"))
conf.OutputDirectory += '\\';
if (conf.CompilerVersion >= NET2010) {
// The target name could have been changed.
- conf.PrimaryOutput = project->first("TARGET");
+ conf.PrimaryOutput = project->first("TARGET").toQString();
if ( !conf.PrimaryOutput.isEmpty() && !project->first("TARGET_VERSION_EXT").isEmpty() && project->isActiveConfig("shared"))
- conf.PrimaryOutput.append(project->first("TARGET_VERSION_EXT"));
- conf.PrimaryOutputExtension = project->first("TARGET_EXT");
+ conf.PrimaryOutput.append(project->first("TARGET_VERSION_EXT").toQString());
+ conf.PrimaryOutputExtension = project->first("TARGET_EXT").toQString();
}
conf.Name = project->values("BUILD_NAME").join(" ");
@@ -922,9 +923,9 @@ void VcprojGenerator::initConfiguration()
conf.BuildBrowserInformation = triState(temp.isEmpty() ? (short)unset : temp.toShort());
temp = project->first("CharacterSet");
conf.CharacterSet = charSet(temp.isEmpty() ? (short)charSetNotSet : temp.toShort());
- conf.DeleteExtensionsOnClean = project->first("DeleteExtensionsOnClean");
+ conf.DeleteExtensionsOnClean = project->first("DeleteExtensionsOnClean").toQString();
conf.ImportLibrary = conf.linker.ImportLibrary;
- conf.IntermediateDirectory = project->first("OBJECTS_DIR");
+ conf.IntermediateDirectory = project->first("OBJECTS_DIR").toQString();
conf.WholeProgramOptimization = conf.compiler.WholeProgramOptimization;
temp = project->first("UseOfATL");
if(!temp.isEmpty())
@@ -953,7 +954,7 @@ void VcprojGenerator::initConfiguration()
void VcprojGenerator::initCompilerTool()
{
- QString placement = project->first("OBJECTS_DIR");
+ QString placement = project->first("OBJECTS_DIR").toQString();
if(placement.isEmpty())
placement = ".\\";
@@ -970,8 +971,8 @@ void VcprojGenerator::initCompilerTool()
if (usePCH) {
conf.compiler.UsePrecompiledHeader = pchUseUsingSpecific;
conf.compiler.PrecompiledHeaderFile = "$(IntDir)\\" + precompPch;
- conf.compiler.PrecompiledHeaderThrough = project->first("PRECOMPILED_HEADER");
- conf.compiler.ForcedIncludeFiles = project->values("PRECOMPILED_HEADER");
+ conf.compiler.PrecompiledHeaderThrough = project->first("PRECOMPILED_HEADER").toQString();
+ conf.compiler.ForcedIncludeFiles = project->values("PRECOMPILED_HEADER").toQStringList();
if (conf.CompilerVersion <= NET2003) {
// Minimal build option triggers an Internal Compiler Error
@@ -991,8 +992,8 @@ void VcprojGenerator::initCompilerTool()
else if (project->isActiveConfig("console"))
conf.compiler.PreprocessorDefinitions += "_CONSOLE";
- conf.compiler.PreprocessorDefinitions += project->values("DEFINES");
- conf.compiler.PreprocessorDefinitions += project->values("PRL_EXPORT_DEFINES");
+ conf.compiler.PreprocessorDefinitions += project->values("DEFINES").toQStringList();
+ conf.compiler.PreprocessorDefinitions += project->values("PRL_EXPORT_DEFINES").toQStringList();
conf.compiler.parseOptions(project->values("MSVCPROJ_INCPATH"));
}
@@ -1000,8 +1001,8 @@ void VcprojGenerator::initLibrarianTool()
{
VCConfiguration &conf = vcProject.Configuration;
conf.librarian.OutputFile = "$(OutDir)\\";
- conf.librarian.OutputFile += project->first("MSVCPROJ_TARGET");
- conf.librarian.AdditionalOptions += project->values("QMAKE_LIBFLAGS");
+ conf.librarian.OutputFile += project->first("MSVCPROJ_TARGET").toQString();
+ conf.librarian.AdditionalOptions += project->values("QMAKE_LIBFLAGS").toQStringList();
}
void VcprojGenerator::initLinkerTool()
@@ -1010,19 +1011,19 @@ void VcprojGenerator::initLinkerTool()
conf.linker.parseOptions(project->values("QMAKE_LFLAGS"));
if (!project->values("DEF_FILE").isEmpty())
- conf.linker.ModuleDefinitionFile = project->first("DEF_FILE");
+ conf.linker.ModuleDefinitionFile = project->first("DEF_FILE").toQString();
- foreach (QString libs, project->values("QMAKE_LIBS") + project->values("QMAKE_LIBS_PRIVATE")) {
- if (libs.left(9).toUpper() == "/LIBPATH:") {
- QStringList l = QStringList(libs);
+ foreach (const ProString &libs, project->values("QMAKE_LIBS") + project->values("QMAKE_LIBS_PRIVATE")) {
+ if (libs.left(9).toQString().toUpper() == "/LIBPATH:") {
+ ProStringList l = ProStringList(libs);
conf.linker.parseOptions(l);
} else {
- conf.linker.AdditionalDependencies += libs;
+ conf.linker.AdditionalDependencies += libs.toQString();
}
}
conf.linker.OutputFile = "$(OutDir)\\";
- conf.linker.OutputFile += project->first("MSVCPROJ_TARGET");
+ conf.linker.OutputFile += project->first("MSVCPROJ_TARGET").toQString();
if(project->isActiveConfig("dll")){
conf.linker.parseOptions(project->values("QMAKE_LFLAGS_QT_DLL"));
@@ -1095,10 +1096,10 @@ void VcprojGenerator::initDeploymentTool()
// FIXME: This code should actually resolve the libraries from all Qt modules.
const QString &qtdir = QLibraryInfo::rawLocation(QLibraryInfo::LibrariesPath,
QLibraryInfo::EffectivePaths);
- QStringList arg = project->values("QMAKE_LIBS") + project->values("QMAKE_LIBS_PRIVATE");
- for (QStringList::ConstIterator it = arg.constBegin(); it != arg.constEnd(); ++it) {
+ ProStringList arg = project->values("QMAKE_LIBS") + project->values("QMAKE_LIBS_PRIVATE");
+ for (ProStringList::ConstIterator it = arg.constBegin(); it != arg.constEnd(); ++it) {
if (it->contains(qtdir)) {
- QString dllName = *it;
+ QString dllName = (*it).toQString();
if (dllName.contains(QLatin1String("QAxContainer"))
|| dllName.contains(QLatin1String("qtmain"))
@@ -1118,7 +1119,7 @@ void VcprojGenerator::initDeploymentTool()
QString runtime = project->values("QT_CE_C_RUNTIME").join(QLatin1String(" "));
if (!runtime.isEmpty() && (runtime != QLatin1String("no"))) {
QString runtimeVersion = QLatin1String("msvcr");
- QString mkspec = project->first("QMAKESPEC");
+ ProString mkspec = project->first("QMAKESPEC");
if (!mkspec.isEmpty()) {
if (mkspec.endsWith("2008"))
@@ -1152,9 +1153,9 @@ void VcprojGenerator::initDeploymentTool()
}
// foreach item in DEPLOYMENT
- foreach(QString item, project->values("DEPLOYMENT")) {
+ foreach (const ProString &item, project->values("DEPLOYMENT")) {
// get item.path
- QString devicePath = project->first(item + ".path");
+ QString devicePath = project->first(ProKey(item + ".path")).toQString();
if (devicePath.isEmpty())
devicePath = targetPath;
// check if item.path is relative (! either /,\ or %)
@@ -1165,9 +1166,9 @@ void VcprojGenerator::initDeploymentTool()
devicePath = Option::fixPathToLocalOS(QDir::cleanPath(targetPath + QLatin1Char('\\') + devicePath));
}
// foreach d in item.files
- foreach (QString source, project->values(item + ".files")) {
+ foreach (const ProString &src, project->values(ProKey(item + ".files"))) {
QString itemDevicePath = devicePath;
- source = Option::fixPathToLocalOS(source);
+ QString source = Option::fixPathToLocalOS(src.toQString());
QString nameFilter;
QFileInfo info(source);
QString searchPath;
@@ -1324,12 +1325,12 @@ void VcprojGenerator::initResourceFiles()
// Bad hack, please look away -------------------------------------
QString rcc_dep_cmd = project->values("rcc.depend_command").join(" ");
if(!rcc_dep_cmd.isEmpty()) {
- QStringList qrc_files = project->values("RESOURCES");
+ ProStringList qrc_files = project->values("RESOURCES");
QStringList deps;
if(!qrc_files.isEmpty()) {
for (int i = 0; i < qrc_files.count(); ++i) {
char buff[256];
- QString dep_cmd = replaceExtraCompilerVariables(rcc_dep_cmd, qrc_files.at(i),"");
+ QString dep_cmd = replaceExtraCompilerVariables(rcc_dep_cmd, qrc_files.at(i).toQString(), "");
dep_cmd = Option::fixPathToLocalOS(dep_cmd, true, false);
if(canExecute(dep_cmd)) {
@@ -1366,7 +1367,7 @@ void VcprojGenerator::initResourceFiles()
void VcprojGenerator::initExtraCompilerOutputs()
{
- QStringList otherFilters;
+ ProStringList otherFilters;
otherFilters << "FORMS"
<< "FORMS3"
<< "GENERATED_FILES"
@@ -1382,15 +1383,15 @@ void VcprojGenerator::initExtraCompilerOutputs()
<< "SOURCES"
<< "TRANSLATIONS"
<< "YACCSOURCES";
- const QStringList &quc = project->values("QMAKE_EXTRA_COMPILERS");
- for(QStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) {
- QString extracompilerName = project->first((*it) + ".name");
+ const ProStringList &quc = project->values("QMAKE_EXTRA_COMPILERS");
+ for (ProStringList::ConstIterator it = quc.begin(); it != quc.end(); ++it) {
+ ProString extracompilerName = project->first(ProKey(*it + ".name"));
if (extracompilerName.isEmpty())
extracompilerName = (*it);
// Create an extra compiler filter and add the files
VCFilter extraCompile;
- extraCompile.Name = extracompilerName;
+ extraCompile.Name = extracompilerName.toQString();
extraCompile.ParseFiles = _False;
extraCompile.Filter = "";
extraCompile.Guid = QString(_GUIDExtraCompilerFiles) + "-" + (*it);
@@ -1398,22 +1399,22 @@ void VcprojGenerator::initExtraCompilerOutputs()
// If the extra compiler has a variable_out set the output file
// is added to an other file list, and does not need its own..
- bool addOnInput = hasBuiltinCompiler(project->first((*it) + ".output"));
- QString tmp_other_out = project->first((*it) + ".variable_out");
+ bool addOnInput = hasBuiltinCompiler(project->first(ProKey(*it + ".output")).toQString());
+ const ProString &tmp_other_out = project->first(ProKey(*it + ".variable_out"));
if (!tmp_other_out.isEmpty() && !addOnInput)
continue;
if (!addOnInput) {
- QString tmp_out = project->first((*it) + ".output");
- if (project->values((*it) + ".CONFIG").indexOf("combine") != -1) {
+ QString tmp_out = project->first(ProKey(*it + ".output")).toQString();
+ if (project->values(ProKey(*it + ".CONFIG")).indexOf("combine") != -1) {
// Combined output, only one file result
extraCompile.addFile(
Option::fixPathToTargetOS(replaceExtraCompilerVariables(tmp_out, QString(), QString()), false));
} else {
// One output file per input
- QStringList tmp_in = project->values(project->first((*it) + ".input"));
+ const ProStringList &tmp_in = project->values(project->first(ProKey(*it + ".input")).toKey());
for (int i = 0; i < tmp_in.count(); ++i) {
- const QString &filename = tmp_in.at(i);
+ const QString &filename = tmp_in.at(i).toQString();
if (extraCompilerSources.contains(filename))
extraCompile.addFile(
Option::fixPathToTargetOS(replaceExtraCompilerVariables(filename, tmp_out, QString()), false));
@@ -1424,12 +1425,12 @@ void VcprojGenerator::initExtraCompilerOutputs()
// build steps there. So, we turn it around and add it to the input files instead,
// provided that the input file variable is not handled already (those in otherFilters
// are handled, so we avoid them).
- QStringList inputVars = project->values((*it) + ".input");
- foreach(QString inputVar, inputVars) {
+ const ProStringList &inputVars = project->values(ProKey(*it + ".input"));
+ foreach (const ProString &inputVar, inputVars) {
if (!otherFilters.contains(inputVar)) {
- QStringList tmp_in = project->values(inputVar);
+ const ProStringList &tmp_in = project->values(inputVar.toKey());
for (int i = 0; i < tmp_in.count(); ++i) {
- const QString &filename = tmp_in.at(i);
+ const QString &filename = tmp_in.at(i).toQString();
if (extraCompilerSources.contains(filename))
extraCompile.addFile(
Option::fixPathToTargetOS(replaceExtraCompilerVariables(filename, QString(), QString()), false));
@@ -1448,23 +1449,23 @@ void VcprojGenerator::initExtraCompilerOutputs()
void VcprojGenerator::initOld()
{
// $$QMAKE.. -> $$MSVCPROJ.. -------------------------------------
- const QStringList &incs = project->values("INCLUDEPATH");
- for (QStringList::ConstIterator incit = incs.begin(); incit != incs.end(); ++incit) {
- QString inc = (*incit);
+ const ProStringList &incs = project->values("INCLUDEPATH");
+ for (ProStringList::ConstIterator incit = incs.begin(); incit != incs.end(); ++incit) {
+ QString inc = (*incit).toQString();
if (!inc.startsWith('"') && !inc.endsWith('"'))
inc = QString("\"%1\"").arg(inc); // Quote all paths if not quoted already
project->values("MSVCPROJ_INCPATH").append("-I" + inc);
}
project->values("MSVCPROJ_INCPATH").append("-I" + specdir());
- QString dest = Option::fixPathToTargetOS(project->first("TARGET")) + project->first("TARGET_EXT");
- project->values("MSVCPROJ_TARGET") = QStringList(dest);
+ QString dest = Option::fixPathToTargetOS(project->first("TARGET").toQString()) + project->first("TARGET_EXT");
+ project->values("MSVCPROJ_TARGET") = ProStringList(dest);
// DLL COPY ------------------------------------------------------
if(project->isActiveConfig("dll") && !project->values("DLLDESTDIR").isEmpty()) {
- QStringList dlldirs = project->values("DLLDESTDIR");
+ const ProStringList &dlldirs = project->values("DLLDESTDIR");
QString copydll("");
- QStringList::Iterator dlldir;
+ ProStringList::ConstIterator dlldir;
for(dlldir = dlldirs.begin(); dlldir != dlldirs.end(); ++dlldir) {
if(!copydll.isEmpty())
copydll += " && ";
@@ -1499,13 +1500,13 @@ QString VcprojGenerator::replaceExtraCompilerVariables(const QString &var, const
{
QString ret = MakefileGenerator::replaceExtraCompilerVariables(var, in, out);
- QStringList &defines = project->values("VCPROJ_MAKEFILE_DEFINES");
+ ProStringList &defines = project->values("VCPROJ_MAKEFILE_DEFINES");
if(defines.isEmpty())
defines.append(varGlue("PRL_EXPORT_DEFINES"," -D"," -D","") +
varGlue("DEFINES"," -D"," -D",""));
- ret.replace("$(DEFINES)", defines.first());
+ ret.replace("$(DEFINES)", defines.first().toQString());
- QStringList &incpath = project->values("VCPROJ_MAKEFILE_INCPATH");
+ ProStringList &incpath = project->values("VCPROJ_MAKEFILE_INCPATH");
if(incpath.isEmpty() && !this->var("MSVCPROJ_INCPATH").isEmpty())
incpath.append(this->var("MSVCPROJ_INCPATH"));
ret.replace("$(INCPATH)", incpath.join(" "));
@@ -1522,10 +1523,10 @@ bool VcprojGenerator::openOutput(QFile &file, const QString &/*build*/) const
outdir = file.fileName() + QDir::separator();
}
if(!outdir.isEmpty() || file.fileName().isEmpty()) {
- QString ext = project->first("VCPROJ_EXTENSION");
+ ProString ext = project->first("VCPROJ_EXTENSION");
if(project->first("TEMPLATE") == "vcsubdirs")
ext = project->first("VCSOLUTION_EXTENSION");
- QString outputName = unescapeFilePath(project->first("TARGET"));
+ ProString outputName = unescapeFilePath(project->first("TARGET"));
if (!project->first("MAKEFILE").isEmpty())
outputName = project->first("MAKEFILE");
file.setFileName(outdir + outputName + ext);
@@ -1553,8 +1554,8 @@ void VcprojGenerator::outputVariables()
{
#if 0
qDebug("Generator: MSVC.NET: List of current variables:");
- for(QHash<QString, QStringList>::ConstIterator it = project->variables().begin(); it != project->variables().end(); ++it)
- qDebug("Generator: MSVC.NET: %s => %s", qPrintable(it.key()), qPrintable(it.value().join(" | ")));
+ for (ProValueMap::ConstIterator it = project->variables().begin(); it != project->variables().end(); ++it)
+ qDebug("Generator: MSVC.NET: %s => %s", qPrintable(it.key().toQString()), qPrintable(it.value().join(" | ")));
#endif
}