From ec9278477811a42dafe0694e94d49eb530a31587 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 25 Jul 2019 13:52:10 +0200 Subject: [PATCH] CMake: Report absolute paths to executables in fileapi mode Task-number: QTCREATORBUG-22610 Change-Id: Ib6abf1ce6d94abd9dc063f4f559f02f2d4ea8798 Reviewed-by: Cristian Adam Reviewed-by: Alexandru Croitor --- .../cmakeprojectmanager/fileapidataextractor.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp index d2c354cfaeb..01c820210de 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp @@ -166,14 +166,20 @@ PreprocessedData preprocess(FileApiData &data, } QList generateBuildTargets(const PreprocessedData &input, - const FilePath &sourceDirectory) + const FilePath &sourceDirectory, + const FilePath &buildDirectory) { QDir sourceDir(sourceDirectory.toString()); + QDir buildDir(buildDirectory.toString()); + const QList result = transform< - QList>(input.targetDetails, [&sourceDir](const TargetDetails &t) -> CMakeBuildTarget { + QList>(input.targetDetails, [&sourceDir, &buildDir](const TargetDetails &t) -> CMakeBuildTarget { CMakeBuildTarget ct; ct.title = t.name; - ct.executable = t.artifacts.isEmpty() ? FilePath() : t.artifacts.at(0); + ct.executable = t.artifacts.isEmpty() + ? FilePath() + : FilePath::fromString(QDir::cleanPath( + buildDir.absoluteFilePath(t.artifacts.at(0).toString()))); TargetType type = UtilityType; if (t.type == "EXECUTABLE") type = ExecutableType; @@ -554,7 +560,7 @@ FileApiQtcData extractData(FileApiData &input, return {}; } - result.buildTargets = generateBuildTargets(data, sourceDirectory); + result.buildTargets = generateBuildTargets(data, sourceDirectory, buildDirectory); result.cmakeFiles = std::move(data.cmakeFiles); result.projectParts = generateRawProjectParts(data, sourceDirectory);