QString Qt4RunConfiguration::dumperLibrary() const { Qt4Project *pro = qobject_cast<Qt4Project *>(project()); QtVersion *version = pro->qtVersion(pro->activeBuildConfiguration()); return version->dumperLibrary(); }
void Qt4RunConfiguration::updateTarget() { if (m_cachedTargetInformationValid) return; //qDebug()<<"updateTarget"; Qt4Project *pro = static_cast<Qt4Project *>(project()); ProFileReader *reader = pro->createProFileReader(); reader->setCumulative(false); reader->setQtVersion(pro->qtVersion(pro->activeBuildConfiguration())); // Find out what flags we pass on to qmake, this code is duplicated in the qmake step QtVersion::QmakeBuildConfig defaultBuildConfiguration = pro->qtVersion(pro->activeBuildConfiguration())->defaultBuildConfig(); QtVersion::QmakeBuildConfig projectBuildConfiguration = QtVersion::QmakeBuildConfig(pro->qmakeStep()->value(pro->activeBuildConfiguration(), "buildConfiguration").toInt()); QStringList addedUserConfigArguments; QStringList removedUserConfigArguments; if ((defaultBuildConfiguration & QtVersion::BuildAll) && !(projectBuildConfiguration & QtVersion::BuildAll)) removedUserConfigArguments << "debug_and_release"; if (!(defaultBuildConfiguration & QtVersion::BuildAll) && (projectBuildConfiguration & QtVersion::BuildAll)) addedUserConfigArguments << "debug_and_release"; if ((defaultBuildConfiguration & QtVersion::DebugBuild) && !(projectBuildConfiguration & QtVersion::DebugBuild)) addedUserConfigArguments << "release"; if (!(defaultBuildConfiguration & QtVersion::DebugBuild) && (projectBuildConfiguration & QtVersion::DebugBuild)) addedUserConfigArguments << "debug"; reader->setUserConfigCmdArgs(addedUserConfigArguments, removedUserConfigArguments); QHash<QString, QStringList>::const_iterator it; if (!reader->readProFile(m_proFilePath)) { delete reader; Core::ICore::instance()->messageManager()->printToOutputPane(QString("Could not parse %1. The Qt4 run configuration %2 can not be started.").arg(m_proFilePath).arg(name())); return; } // Extract data QDir baseProjectDirectory = QFileInfo(project()->file()->fileName()).absoluteDir(); QString relSubDir = baseProjectDirectory.relativeFilePath(QFileInfo(m_proFilePath).path()); QDir baseBuildDirectory = project()->buildDirectory(project()->activeBuildConfiguration()); QString baseDir = baseBuildDirectory.absoluteFilePath(relSubDir); //qDebug()<<relSubDir<<baseDir; // Working Directory if (reader->contains("DESTDIR")) { //qDebug()<<"reader contains destdir:"<<reader->value("DESTDIR"); m_workingDir = reader->value("DESTDIR"); if (QDir::isRelativePath(m_workingDir)) { m_workingDir = baseDir + QLatin1Char('/') + m_workingDir; //qDebug()<<"was relative and expanded to"<<m_workingDir; } } else { //qDebug()<<"reader didn't contain DESTDIR, setting to "<<baseDir; m_workingDir = baseDir; #if defined(Q_OS_WIN) QString qmakeBuildConfig = "release"; if (projectBuildConfiguration & QtVersion::DebugBuild) qmakeBuildConfig = "debug"; if (!reader->contains("DESTDIR")) m_workingDir += QLatin1Char('/') + qmakeBuildConfig; #endif } #if defined (Q_OS_MAC) if (reader->values("CONFIG").contains("app_bundle")) { m_workingDir += QLatin1Char('/') + reader->value("TARGET") + QLatin1String(".app/Contents/MacOS"); } #endif m_workingDir = QDir::cleanPath(m_workingDir); m_executable = QDir::cleanPath(m_workingDir + QLatin1Char('/') + reader->value("TARGET")); //qDebug()<<"##### updateTarget sets:"<<m_workingDir<<m_executable; #if defined (Q_OS_WIN) m_executable += QLatin1String(".exe"); #endif delete reader; m_cachedTargetInformationValid = true; emit effectiveTargetInformationChanged(); }