Merge remote-tracking branch 'origin/11.0'

Change-Id: I2e0e8dd5f9b42533c665255f8539e837938846de
This commit is contained in:
Eike Ziller
2023-07-13 08:28:42 +02:00
39 changed files with 157 additions and 109 deletions

View File

@@ -183,7 +183,7 @@ QList<ProjectExplorer::BuildTargetInfo> MesonProjectParser::appsTargets() const
if (target.type == Target::Type::executable) {
ProjectExplorer::BuildTargetInfo bti;
bti.displayName = target.name;
bti.buildKey = Target::fullName(m_srcDir, target);
bti.buildKey = Target::fullName(m_buildDir, target);
bti.displayNameUniquifier = bti.buildKey;
bti.targetFilePath = Utils::FilePath::fromString(target.fileName.first());
bti.workingDirectory = Utils::FilePath::fromString(target.fileName.first()).absolutePath();
@@ -237,7 +237,7 @@ void MesonProjectParser::update(const QFuture<MesonProjectParser::ParserData *>
m_rootNode = std::move(parserData->rootNode);
m_targetsNames.clear();
for (const Target &target : m_parserResult.targets) {
m_targetsNames.push_back(Target::fullName(m_srcDir, target));
m_targetsNames.push_back(Target::fullName(m_buildDir, target));
}
addMissingTargets(m_targetsNames);
m_targetsNames.sort();
@@ -253,7 +253,7 @@ ProjectExplorer::RawProjectPart MesonProjectParser::buildRawPart(
{
ProjectExplorer::RawProjectPart part;
part.setDisplayName(target.name);
part.setBuildSystemTarget(Target::fullName(m_srcDir, target));
part.setBuildSystemTarget(Target::fullName(m_buildDir, target));
part.setFiles(sources.sources + sources.generatedSources);
auto flags = splitArgs(sources.parameters);
part.setMacros(flags.macros);

View File

@@ -60,15 +60,17 @@ struct Target
const std::optional<QString> subproject;
const SourceGroupList sources;
static inline QString fullName(const Utils::FilePath &srcDir, const Target &target)
static inline QString fullName(const Utils::FilePath &buildDir, const Target &target)
{
using namespace Utils;
if (FilePath::fromString((target.fileName.first())).isAbsolutePath()) {
const auto fname = target.fileName.first().split('/').last();
QString definedIn = FilePath::fromString(target.definedIn).absolutePath().toString();
return definedIn.remove(srcDir.toString()) + '/' + fname;
auto fname = target.fileName.first();
if (FilePath::fromString(fname).isAbsolutePath()) {
fname.remove(buildDir.toString());
if (fname.startsWith('/'))
fname.remove(0, 1);
return fname;
} else {
return target.fileName.first();
return fname;
}
}