Browse Source

FileAPI: Ignore unresolved FileSet generators

Fixes: #27054
Vito Gamberini 4 months ago
parent
commit
ea6404b9c4

+ 7 - 1
Source/cmFileAPICodemodel.cxx

@@ -1068,10 +1068,16 @@ Json::Value DirectoryObject::DumpInstaller(cmInstallGenerator* gen)
     }
   } else if (auto* installFileSet =
                dynamic_cast<cmInstallFileSetGenerator*>(gen)) {
+    auto const* fileSet = installFileSet->GetFileSet();
+
+    // No fileSet by that name exists for the associated target
+    if (!fileSet) {
+      return installer;
+    }
+
     installer["type"] = "fileSet";
     installer["destination"] = installFileSet->GetDestination(this->Config);
 
-    auto const* fileSet = installFileSet->GetFileSet();
     auto* target = installFileSet->GetTarget();
 
     auto dirCges = fileSet->CompileDirectoryEntries();

+ 1 - 1
Tests/RunCMake/FileAPI/codemodel-v2-data/directories/fileset.json

@@ -187,7 +187,7 @@
       "backtrace": [
         {
           "file": "^fileset/CMakeLists\\.txt$",
-          "line": 25,
+          "line": 28,
           "command": "install",
           "hasParent": true
         },

+ 1 - 1
Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_2.json

@@ -88,7 +88,7 @@
         "backtrace": [
           {
             "file": "^fileset/CMakeLists\\.txt$",
-            "line": 25,
+            "line": 28,
             "command": "install",
             "hasParent": true
           },

+ 3 - 0
Tests/RunCMake/FileAPI/fileset/CMakeLists.txt

@@ -21,5 +21,8 @@ install(TARGETS c_headers_1
   FILE_SET HEADERS DESTINATION include COMPONENT Headers
   FILE_SET b DESTINATION include/dir
   FILE_SET c
+
+  # Non-extant FILE_SET should be ignored
+  FILE_SET d
   )
 install(TARGETS c_headers_2)