summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2023-11-20 14:12:42 (GMT)
committerKitware Robot <kwrobot@kitware.com>2023-11-20 14:13:01 (GMT)
commitb6845a689e379f2cde989dec070dd94855067fcb (patch)
tree295d7d0692b07a2653f349140bfa799067cc9d99
parent79811a2d2bb990715a3230b23ed4848109d93269 (diff)
parenta3a85524cd133888288689871e69da76f2267eda (diff)
downloadCMake-b6845a689e379f2cde989dec070dd94855067fcb.zip
CMake-b6845a689e379f2cde989dec070dd94855067fcb.tar.gz
CMake-b6845a689e379f2cde989dec070dd94855067fcb.tar.bz2
Merge topic 'fileapi-file-sets-base-dirs-relative'
a3a85524cd fileapi: Fix file sets' base directories relative to top source Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Reviewed-by: Ben Boeckel <ben.boeckel@kitware.com> Merge-request: !8977
-rw-r--r--Help/manual/cmake-file-api.7.rst4
-rw-r--r--Source/cmFileAPICodemodel.cxx2
-rw-r--r--Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_1.json8
-rw-r--r--Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_2.json2
4 files changed, 9 insertions, 7 deletions
diff --git a/Help/manual/cmake-file-api.7.rst b/Help/manual/cmake-file-api.7.rst
index 5f16a8b..a6d2345 100644
--- a/Help/manual/cmake-file-api.7.rst
+++ b/Help/manual/cmake-file-api.7.rst
@@ -1094,7 +1094,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.
diff --git a/Source/cmFileAPICodemodel.cxx b/Source/cmFileAPICodemodel.cxx
index 3c1bc14..d069186 100644
--- a/Source/cmFileAPICodemodel.cxx
+++ b/Source/cmFileAPICodemodel.cxx
@@ -1635,7 +1635,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;
diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_1.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_1.json
index faf0eaa..0e10b52 100644
--- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_1.json
+++ b/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": [
diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_2.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_2.json
index b4f2f9d..04fdc36 100644
--- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/c_headers_2.json
+++ b/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": [