diff --git a/Help/manual/cmake-file-api.7.rst b/Help/manual/cmake-file-api.7.rst index 5f16a8b47e..a6d2345f35 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 280ebb0136..53efb0deb2 100644 --- a/Source/cmFileAPICodemodel.cxx +++ b/Source/cmFileAPICodemodel.cxx @@ -1636,7 +1636,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 f6cfa9c751..8d1d219014 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 591ba4f8eb..e97f6d49b2 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": [