ソースを参照

Merge topic 'fileapi-file-sets-base-dirs-relative' into release-3.28

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

Acked-by: Kitware Robot <[email protected]>
Acked-by: buildbot <[email protected]>
Reviewed-by: Ben Boeckel <[email protected]>
Merge-request: !8977
Brad King 2 年 前
コミット
2f30b29ac3

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

@@ -1094,7 +1094,9 @@ with members:
 
 
   ``baseDirectories``
   ``baseDirectories``
     A JSON array of strings specifying the base directories containing sources
     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.
   This field was added in codemodel version 2.5.
 
 

+ 1 - 1
Source/cmFileAPICodemodel.cxx

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

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

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

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

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