summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@qt.io>2021-05-19 17:22:29 +0200
committerCristian Adam <cristian.adam@qt.io>2021-05-20 07:28:16 +0000
commitb5428d0903309918d88ae13c7c1c0a5b2f45c831 (patch)
treebed6186d053e4b4dc99391f4a06f1671c7c10466
parent97b6b2c0914f9c56da9d80d876abe00bcae1e625 (diff)
downloadqt-creator-b5428d0903309918d88ae13c7c1c0a5b2f45c831.tar.gz
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 <target>" or "--target <target>". Filter out instead the "_autogen" and "_autogen_timestamp_deps". Fixes: QTCREATORBUG-25726 Change-Id: Ia73d6e87e4b230114d068649964792ff3f626378 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp15
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsystem.h2
-rw-r--r--src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp2
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<BuildTargetInfo> 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<BuildTargetInfo> 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<CMakeBuildTarget> &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<CMakeBuildTarget> 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) {