diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp index e9d9d841702..41c7ea53c6e 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp @@ -942,6 +942,31 @@ static void setupLocationInfoForTargets(const QFuture &cancelFuture, } } +static void markCMakeModulesFromPrefixPathAsGenerated(FileApiQtcData &result) +{ + const QSet paths = [&result]() { + QSet paths; + for (const QByteArray &var : {"CMAKE_PREFIX_PATH", "CMAKE_FIND_ROOT_PATH"}) { + const QStringList pathList = result.cache.stringValueOf(var).split(";"); + for (const QString &path : pathList) + paths.insert(FilePath::fromString(path)); + } + return paths; + }(); + + if (!result.rootProjectNode) + return; + + result.rootProjectNode->forEachGenericNode([&paths](Node *node) { + for (const FilePath &path : paths) { + if (node->path().isChildOf(path)) { + node->setIsGenerated(true); + break; + } + } + }); +} + // -------------------------------------------------------------------- // extractData: // -------------------------------------------------------------------- @@ -989,6 +1014,8 @@ FileApiQtcData extractData(const QFuture &cancelFuture, FileApiData &input if (input.replyFile.isMultiConfig && input.replyFile.generator != "Ninja Multi-Config") result.usesAllCapsTargets = true; + markCMakeModulesFromPrefixPathAsGenerated(result); + return result; }