CMake: Report absolute paths to executables in fileapi mode

Task-number: QTCREATORBUG-22610
Change-Id: Ib6abf1ce6d94abd9dc063f4f559f02f2d4ea8798
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Tobias Hunger
2019-07-25 13:52:10 +02:00
parent b89ad81293
commit ec92784778

View File

@@ -166,14 +166,20 @@ PreprocessedData preprocess(FileApiData &data,
}
QList<CMakeBuildTarget> generateBuildTargets(const PreprocessedData &input,
const FilePath &sourceDirectory)
const FilePath &sourceDirectory,
const FilePath &buildDirectory)
{
QDir sourceDir(sourceDirectory.toString());
QDir buildDir(buildDirectory.toString());
const QList<CMakeBuildTarget> 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);