فهرست منبع

fileapi: Fix file sets' base directories relative to top source

This field was added by commit b3e9fb67bb (file-api: support exporting
file set information, 2022-11-03, v3.26.0-rc1~389^2) but the relative
path convention used elsewhere was accidentally left out.

Fixes: #25422
Kyle Edwards 1 سال پیش
والد
کامیت
a3a85524cd

+ 3 - 1
Help/manual/cmake-file-api.7.rst

@@ -1088,7 +1088,9 @@ with members:
 
   ``baseDirectories``
     A JSON array of strings specifying the base directories containing sources
-    in the file set.
+    in the file set.  If the file is inside the top-level source directory
+    then the path is specified relative to that directory.  Otherwise the path
+    is absolute.
 
   This field was added in codemodel version 2.5.
 

+ 1 - 1
Source/cmFileAPICodemodel.cxx

@@ -1611,7 +1611,7 @@ Json::Value Target::DumpFileSet(cmFileSet const* fs,
 
   Json::Value baseDirs = Json::arrayValue;
   for (auto const& directory : directories) {
-    baseDirs.append(directory);
+    baseDirs.append(RelativeIfUnder(this->TopSource, directory));
   }
   fileSet["baseDirectories"] = baseDirs;
 

+ 4 - 4
Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_1.json

@@ -10,25 +10,25 @@
       "name": "HEADERS",
       "type": "HEADERS",
       "visibility": "PUBLIC",
-      "baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset$"]
+      "baseDirectories": ["^fileset$"]
     },
     {
       "name": "a",
       "type": "HEADERS",
       "visibility": "PRIVATE",
-      "baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset$"]
+      "baseDirectories": ["^fileset$"]
     },
     {
       "name": "b",
       "type": "HEADERS",
       "visibility": "PUBLIC",
-      "baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset/dir$"]
+      "baseDirectories": ["^fileset/dir$"]
     },
     {
       "name": "c",
       "type": "HEADERS",
       "visibility": "INTERFACE",
-      "baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset$"]
+      "baseDirectories": ["^fileset$"]
     }
   ],
   "sources": [

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

@@ -10,7 +10,7 @@
       "name": "HEADERS",
       "type": "HEADERS",
       "visibility": "INTERFACE",
-      "baseDirectories": [".*/Tests/RunCMake/FileAPI/fileset$"]
+      "baseDirectories": ["^fileset$"]
     }
   ],
   "sources": [