summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 7ff9728..878a174 100644
--- a/Help/manual/cmake-file-api.7.rst
+++ b/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.
diff --git a/Source/cmFileAPICodemodel.cxx b/Source/cmFileAPICodemodel.cxx
index d3683d4..ee09cc3 100644
--- a/Source/cmFileAPICodemodel.cxx
+++ b/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;
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 715514d..aad3a94 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 4757a9c..3f95a0b 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": [