forked from qt-creator/qt-creator
CMake: Tweak detecting of right project part
Don't consider targets that end in _unittest or _automoc. Also don't read CMakeDirectoryInformation.cmake as that doesn't work with add_subdirectory. Change-Id: If06af60e1637e94cccd32d09fc26c6b87488671b Task-number: QTCREATORBUG-12183 Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
This commit is contained in:
@@ -1029,7 +1029,9 @@ void CMakeCbpParser::parseBuildTarget()
|
||||
while (!atEnd()) {
|
||||
readNext();
|
||||
if (isEndElement()) {
|
||||
if (!m_buildTarget.title.endsWith(QLatin1String("/fast")))
|
||||
if (!m_buildTarget.title.endsWith(QLatin1String("/fast"))
|
||||
&& !m_buildTarget.title.endsWith(QLatin1String("_automoc"))
|
||||
&& !m_buildTarget.title.endsWith(QLatin1String("_unittest")))
|
||||
m_buildTargets.append(m_buildTarget);
|
||||
return;
|
||||
} else if (name() == QLatin1String("Compiler")) {
|
||||
@@ -1054,28 +1056,10 @@ void CMakeCbpParser::parseBuildTargetOption()
|
||||
m_buildTarget.targetType = TargetType(value.toInt());
|
||||
} else if (attributes().hasAttribute(QLatin1String("working_dir"))) {
|
||||
m_buildTarget.workingDirectory = attributes().value(QLatin1String("working_dir")).toString();
|
||||
|
||||
QFile cmakeSourceInfoFile(m_buildTarget.workingDirectory
|
||||
+ QStringLiteral("/CMakeFiles/CMakeDirectoryInformation.cmake"));
|
||||
if (cmakeSourceInfoFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
QTextStream stream(&cmakeSourceInfoFile);
|
||||
const QLatin1String searchSource("SET(CMAKE_RELATIVE_PATH_TOP_SOURCE \"");
|
||||
while (!stream.atEnd()) {
|
||||
const QString lineTopSource = stream.readLine().trimmed();
|
||||
if (lineTopSource.startsWith(searchSource)) {
|
||||
m_buildTarget.sourceDirectory = lineTopSource.mid(searchSource.size());
|
||||
m_buildTarget.sourceDirectory.chop(2); // cut off ")
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (m_buildTarget.sourceDirectory.isEmpty()) {
|
||||
QDir dir(m_buildDirectory);
|
||||
const QString relative = dir.relativeFilePath(m_buildTarget.workingDirectory);
|
||||
m_buildTarget.sourceDirectory
|
||||
= FileName::fromString(m_sourceDirectory).appendPath(relative).toString();
|
||||
}
|
||||
QDir dir(m_buildDirectory);
|
||||
const QString relative = dir.relativeFilePath(m_buildTarget.workingDirectory);
|
||||
m_buildTarget.sourceDirectory
|
||||
= FileName::fromString(m_sourceDirectory).appendPath(relative).toString();
|
||||
}
|
||||
while (!atEnd()) {
|
||||
readNext();
|
||||
|
Reference in New Issue
Block a user