From b5428d0903309918d88ae13c7c1c0a5b2f45c831 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Wed, 19 May 2021 17:22:29 +0200 Subject: CMakePM: Do not filter out all UTILITY targets add_custom_target will be set as UTILITY target, which one might want to reference as "cm " or "--target ". Filter out instead the "_autogen" and "_autogen_timestamp_deps". Fixes: QTCREATORBUG-25726 Change-Id: Ia73d6e87e4b230114d068649964792ff3f626378 Reviewed-by: Alessandro Portale Reviewed-by: Eike Ziller --- src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp | 15 ++++++++++----- src/plugins/cmakeprojectmanager/cmakebuildsystem.h | 2 ++ src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp | 2 +- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index b558cc0d9d..d32c6e7d5e 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -1016,7 +1016,7 @@ const QList CMakeBuildSystem::appTargets() const const bool forAndroid = DeviceTypeKitAspect::deviceTypeId(kit()) == Android::Constants::ANDROID_DEVICE_TYPE; for (const CMakeBuildTarget &ct : m_buildTargets) { - if (ct.targetType == UtilityType) + if (CMakeBuildSystem::filteredOutTarget(ct)) continue; if (ct.targetType == ExecutableType || (forAndroid && ct.targetType == DynamicLibraryType)) { @@ -1047,11 +1047,10 @@ const QList CMakeBuildSystem::appTargets() const QStringList CMakeBuildSystem::buildTargetTitles() const { - auto nonUtilityTargets = filtered(m_buildTargets, [this](const CMakeBuildTarget &target){ - return target.targetType != UtilityType || - CMakeBuildStep::specialTargets(usesAllCapsTargets()).contains(target.title); + auto nonAutogenTargets = filtered(m_buildTargets, [this](const CMakeBuildTarget &target){ + return !CMakeBuildSystem::filteredOutTarget(target); }); - return transform(nonUtilityTargets, &CMakeBuildTarget::title); + return transform(nonAutogenTargets, &CMakeBuildTarget::title); } const QList &CMakeBuildSystem::buildTargets() const @@ -1073,6 +1072,12 @@ CMakeConfig CMakeBuildSystem::parseCMakeCacheDotTxt(const Utils::FilePath &cache return result; } +bool CMakeBuildSystem::filteredOutTarget(const CMakeBuildTarget &target) +{ + return target.title.endsWith("_autogen") || + target.title.endsWith("_autogen_timestamp_deps"); +} + bool CMakeBuildSystem::isMultiConfig() const { return m_reader.isMultiConfig(); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h index 00740feaa0..3b591c1581 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h @@ -99,6 +99,8 @@ public: static CMakeConfig parseCMakeCacheDotTxt(const Utils::FilePath &cacheFile, QString *errorMessage); + static bool filteredOutTarget(const CMakeBuildTarget &target); + bool isMultiConfig() const; bool usesAllCapsTargets() const; diff --git a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp index abeec70e59..65ee922918 100644 --- a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp @@ -71,7 +71,7 @@ void CMakeTargetLocatorFilter::prepareSearch(const QString &entry) const QList buildTargets = bs->buildTargets(); for (const CMakeBuildTarget &target : buildTargets) { - if (target.targetType == UtilityType && !CMakeBuildStep::specialTargets(bs->usesAllCapsTargets()).contains(target.title)) + if (CMakeBuildSystem::filteredOutTarget(target)) continue; const int index = target.title.indexOf(entry); if (index >= 0) { -- cgit v1.2.1