fileAPI: Support files added to multiple file sets

The `fileSetIndex` field of target sources replies is incomplete, as a
single source file can be added to arbitrarily many file sets. Add a
`fileSetIndexes` field to report all file sets to which a source
belongs, and preserve `fileSetIndex` for compatibility as the index of
the most recent addition.

Tweak the test suite to use the plural spelling only in expected JSON
snippets and verify that the singular `fileSetIndex` is always the last
element of the new list. (Note that remaining occurrences of the
singular spelling correspond to "installers" objects, which is entirely
different.)

Fixes: #27035
This commit is contained in:
Tyler Yankee
2026-05-12 16:45:12 -04:00
parent 05c103d92a
commit 3d249d2aa9
80 changed files with 298 additions and 137 deletions
+24 -2
View File
@@ -1626,12 +1626,23 @@ with members:
the source is :prop_sf:`GENERATED`.
``fileSetIndex``
.. deprecated:: 4.4
Use the ``fileSetIndexes`` field instead, which is an array, and
accounts for sources assigned to multiple file sets.
Optional member that is present when the source is part of a file set.
The value is an unsigned integer 0-based index into the ``fileSets``
array.
array representing the file set to which the source was most recently added.
This field was added in codemodel version 2.5.
``fileSetIndexes``
Optional member that is present when the source is part of at least one
file set; see also policy :policy:`CMP0211`. The value is
an array of unsigned integer 0-based indexes inte the ``fileSets`` array.
This field was added in codemodel version 2.11.
``backtrace``
Optional member that is present when a CMake language backtrace to
the :command:`target_sources`, :command:`add_executable`,
@@ -1663,9 +1674,20 @@ with members:
the source is :prop_sf:`GENERATED`.
``fileSetIndex``
.. deprecated:: 4.4
Use the ``fileSetIndexes`` field instead, which is an array, and
accounts for sources assigned to multiple file sets.
Optional member that is present when the source is part of a file set.
The value is an unsigned integer 0-based index into the ``fileSets``
array.
array representing the file set to which the source was most recently added.
``fileSetIndexes``
Optional member that is present when the source is part of at least one
file set; see also policy :policy:`CMP0211`. The value is
an array of unsigned integer 0-based indexes inte the ``fileSets`` array.
This field was added in codemodel version 2.11.
This field was added in codemodel version 2.10.
+70 -2
View File
@@ -648,6 +648,14 @@
"minimum": 0,
"description": "Index into the fileSets array. Only present if the file is part of a file set."
},
"sourcesFileSetIndexesV2_11": {
"type": "array",
"description": "Indexes into the fileSets array. Only present if the file is part of a file set.",
"items": {
"type": "integer",
"minimum": 0
}
},
"sourcesV2_0": {
"type": "array",
"items": {
@@ -705,6 +713,39 @@
"additionalProperties": false
}
},
"sourcesV2_11": {
"type": "array",
"items": {
"type": "object",
"required": [
"path"
],
"properties": {
"path": {
"$ref": "#/definitions/sourcesPath"
},
"compileGroupIndex": {
"$ref": "#/definitions/sourcesCompileGroupIndex"
},
"sourceGroupIndex": {
"$ref": "#/definitions/sourcesSourceGroupIndex"
},
"isGenerated": {
"$ref": "#/definitions/sourcesIsGenerated"
},
"backtrace": {
"$ref": "#/definitions/backtrace"
},
"fileSetIndex": {
"$ref": "#/definitions/sourcesFileSetIndexV2_5"
},
"fileSetIndexes": {
"$ref": "#/definitions/sourcesFileSetIndexesV2_11"
}
},
"additionalProperties": false
}
},
"interfaceSourcesV2_10": {
"type": "array",
"items": {
@@ -729,6 +770,33 @@
"additionalProperties": false
}
},
"interfaceSourcesV2_11": {
"type": "array",
"items": {
"type": "object",
"required": [
"path"
],
"properties": {
"path": {
"$ref": "#/definitions/sourcesPath"
},
"sourceGroupIndex": {
"$ref": "#/definitions/sourcesSourceGroupIndex"
},
"isGenerated": {
"$ref": "#/definitions/sourcesIsGenerated"
},
"fileSetIndex": {
"$ref": "#/definitions/sourcesFileSetIndexV2_5"
},
"fileSetIndexes": {
"$ref": "#/definitions/sourcesFileSetIndexesV2_11"
}
},
"additionalProperties": false
}
},
"sourceGroupsV2_0": {
"type": "array",
"items": {
@@ -1922,10 +1990,10 @@
"$ref": "#/definitions/fileSetsV2_11"
},
"sources": {
"$ref": "#/definitions/sourcesV2_5"
"$ref": "#/definitions/sourcesV2_11"
},
"interfaceSources": {
"$ref": "#/definitions/interfaceSourcesV2_10"
"$ref": "#/definitions/interfaceSourcesV2_11"
},
"symbolic": {
"$ref": "#/definitions/symbolicV2_9"
@@ -0,0 +1,8 @@
file-api-fileSetIndexes
-----------------------
* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" "sources" and
"interfaceSources" objects gained new ``fileSetIndexes`` fields to support
sources belonging to multiple file sets. The ``fileSetIndex`` fields are
maintained for backwards compatibility only, and users are advised to port
to the new fields.
+13 -5
View File
@@ -462,7 +462,7 @@ class Target
std::unordered_map<CompileData, Json::ArrayIndex> CompileGroupMap;
std::vector<CompileGroup> CompileGroups;
using FileSetDatabase = std::map<std::string, Json::ArrayIndex>;
using FileSetDatabase = std::map<std::string, std::vector<Json::ArrayIndex>>;
std::vector<cm::FileSetMetadata::Visibility> FileSetVisibilities;
@@ -1802,7 +1802,7 @@ std::pair<Json::Value, Target::FileSetDatabase> Target::DumpFileSets()
} else {
sf_path = cmStrCat(dir, '/', file);
}
fsdb[sf_path] = static_cast<Json::ArrayIndex>(fsIndex);
fsdb[sf_path].emplace_back(static_cast<Json::ArrayIndex>(fsIndex));
}
}
@@ -1859,7 +1859,11 @@ Json::Value Target::DumpSource(cmGeneratorTarget::SourceAndKind const& sk,
auto fsit = fsdb.find(path);
if (fsit != fsdb.end()) {
source["fileSetIndex"] = fsit->second;
source["fileSetIndex"] = fsit->second.back();
source["fileSetIndexes"] = Json::arrayValue;
for (Json::ArrayIndex const& fsIndex : fsit->second) {
source["fileSetIndexes"].append(fsIndex);
}
}
if (cmSourceGroup const* sg =
@@ -1920,7 +1924,7 @@ Json::Value Target::DumpInterfaceSources(FileSetDatabase const& fsdb)
}
for (auto const& fsIter : fsdb) {
Json::ArrayIndex const index = fsIter.second;
Json::ArrayIndex const index = fsIter.second.back();
// FileSetVisibilities was populated by DumpFileSets() and will always
// have the same size as the file sets array that index is indexing into
if (this->FileSetVisibilities[index] !=
@@ -1946,7 +1950,11 @@ Json::Value Target::DumpInterfaceSource(std::string path, Json::ArrayIndex si,
auto fsit = fsdb.find(path);
if (fsit != fsdb.end()) {
source["fileSetIndex"] = fsit->second;
source["fileSetIndex"] = fsit->second.back();
source["fileSetIndexes"] = Json::arrayValue;
for (Json::ArrayIndex const& fsIndex : fsit->second) {
source["fileSetIndexes"].append(fsIndex);
}
}
if (cmSourceGroup const* sg =
+14 -3
View File
@@ -355,9 +355,20 @@ def check_target(c, major, minor):
assert is_dict(actual)
expected_keys = ["path"]
if expected["fileSetName"] is not None:
if expected["fileSetNames"] is not None:
expected_keys.append("fileSetIndex")
assert is_string(obj["fileSets"][actual["fileSetIndex"]]["name"], expected["fileSetName"])
expected_keys.append("fileSetIndexes")
assert is_list(expected["fileSetIndexes"])
assert is_list(expected["fileSetNames"])
assert is_list(actual["fileSetIndexes"])
assert is_int(actual["fileSetIndex"], actual["fileSetIndexes"][-1])
assert is_string(obj["fileSets"][actual["fileSetIndex"]]["name"], expected["fileSetNames"][-1])
assert is_int(len(actual["fileSetIndexes"]), len(expected["fileSetNames"]))
for (actual_idx, expected_name) in zip(actual["fileSetIndexes"], expected["fileSetNames"]):
assert is_string(obj["fileSets"][actual_idx]["name"], expected_name)
if expected["compileGroupLanguage"] is not None:
expected_keys.append("compileGroupIndex")
@@ -1164,7 +1175,7 @@ def gen_check_build_system_targets(c, g, inSource):
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/CMakeFiles/([0-9a-f]+/)?generate\\.stamp\\.rule$",
"isGenerated": True,
"fileSetName": None,
"fileSetNames": None,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": None,
"backtrace": [
@@ -134,7 +134,8 @@
"type": "fileSet",
"destination": "include",
"paths": [
"^fileset/h3\\.h$"
"^fileset/h3\\.h$",
"^fileset/h5\\.h$"
],
"isExcludeFromAll": null,
"isForAllComponents": null,
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/alias/CMakeFiles/ALL_BUILD$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/alias/CMakeFiles/ALL_BUILD\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/custom/CMakeFiles/ALL_BUILD$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/custom/CMakeFiles/ALL_BUILD\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/cxx/CMakeFiles/ALL_BUILD$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/cxx/CMakeFiles/ALL_BUILD\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/direct/CMakeFiles/ALL_BUILD$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/direct/CMakeFiles/ALL_BUILD\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/FileAPIExternalBuild/CMakeFiles/ALL_BUILD$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/FileAPIExternalBuild/CMakeFiles/ALL_BUILD\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/framework/CMakeFiles/ALL_BUILD$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/framework/CMakeFiles/ALL_BUILD\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/imported/CMakeFiles/ALL_BUILD$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/imported/CMakeFiles/ALL_BUILD\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/interface/CMakeFiles/ALL_BUILD$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/interface/CMakeFiles/ALL_BUILD\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/object/CMakeFiles/ALL_BUILD$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/object/CMakeFiles/ALL_BUILD\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/CMakeFiles/ALL_BUILD$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/CMakeFiles/ALL_BUILD\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -47,7 +47,7 @@
{
"path": "^fileset/empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -68,7 +68,8 @@
{
"path": "^fileset/error\\.c$",
"isGenerated": null,
"fileSetName": "HEADERS",
"fileSetNames": ["HEADERS"],
"fileSetIndexes": [0],
"sourceGroupName": "Header Files",
"compileGroupLanguage": null,
"backtrace": [
@@ -89,7 +90,8 @@
{
"path": "^fileset/other\\.c$",
"isGenerated": null,
"fileSetName": "HEADERS",
"fileSetNames": ["HEADERS"],
"fileSetIndexes": [0],
"sourceGroupName": "Source Files",
"compileGroupLanguage": null,
"backtrace": [
@@ -110,7 +112,8 @@
{
"path": "^fileset/h1\\.h$",
"isGenerated": null,
"fileSetName": "a",
"fileSetNames": ["a"],
"fileSetIndexes": [1],
"sourceGroupName": "Header Files",
"compileGroupLanguage": null,
"backtrace": [
@@ -131,7 +134,30 @@
{
"path": "^fileset/dir/h4\\.h$",
"isGenerated": null,
"fileSetName": "a",
"fileSetNames": ["a"],
"fileSetIndexes": [1],
"sourceGroupName": "Header Files",
"compileGroupLanguage": null,
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 3,
"command": "target_sources",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
]
},
{
"path": "^fileset/h5\\.h$",
"isGenerated": null,
"fileSetNames": ["a", "c"],
"fileSetIndexes": [1, 3],
"sourceGroupName": "Header Files",
"compileGroupLanguage": null,
"backtrace": [
@@ -152,7 +178,8 @@
{
"path": "^fileset/dir/h2\\.h$",
"isGenerated": null,
"fileSetName": "b",
"fileSetNames": ["b"],
"fileSetIndexes": [2],
"sourceGroupName": "Header Files",
"compileGroupLanguage": null,
"backtrace": [
@@ -175,25 +202,36 @@
{
"path": "^fileset/error\\.c$",
"isGenerated": null,
"fileSetName": "HEADERS",
"fileSetNames": ["HEADERS"],
"fileSetIndexes": [0],
"sourceGroupName": "Header Files"
},
{
"path": "^fileset/other\\.c$",
"isGenerated": null,
"fileSetName": "HEADERS",
"fileSetNames": ["HEADERS"],
"fileSetIndexes": [0],
"sourceGroupName": "Source Files"
},
{
"path": "^fileset/h3\\.h$",
"isGenerated": null,
"fileSetName": "c",
"fileSetNames": ["c"],
"fileSetIndexes": [3],
"sourceGroupName": "Header Files"
},
{
"path": "^fileset/h5\\.h$",
"isGenerated": null,
"fileSetNames": ["c"],
"fileSetIndexes": [1, 3],
"sourceGroupName": "Header Files"
},
{
"path": "^fileset/dir/h2\\.h$",
"isGenerated": null,
"fileSetName": "b",
"fileSetNames": ["b"],
"fileSetIndexes": [2],
"sourceGroupName": "Header Files"
}
],
@@ -213,13 +251,15 @@
"sourcePaths": [
"^fileset/error\\.c$",
"^fileset/h1\\.h$",
"^fileset/h5\\.h$",
"^fileset/dir/h2\\.h$",
"^fileset/dir/h4\\.h$"
],
"interfaceSourcePaths": [
"^fileset/error\\.c$",
"^fileset/dir/h2\\.h$",
"^fileset/h3\\.h$"
"^fileset/h3\\.h$",
"^fileset/h5\\.h$",
"^fileset/dir/h2\\.h$"
]
}
],
@@ -23,7 +23,7 @@
{
"path": "^fileset/empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -46,7 +46,7 @@
{
"path": "^fileset/h1\\.h$",
"isGenerated": null,
"fileSetName": "HEADERS",
"fileSetNames": ["HEADERS"],
"sourceGroupName": "Header Files"
}
],
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -35,7 +35,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/(object|build/c_object_lib\\.build)/.*/empty(\\.c)?\\.o(bj)?$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Object Libraries",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -31,7 +31,8 @@
{
"path": "^fileset/empty\\.c$",
"isGenerated": null,
"fileSetName": "public_srcs",
"fileSetNames": ["public_srcs"],
"fileSetIndexes": [0],
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -52,7 +53,8 @@
{
"path": "^fileset/other\\.c$",
"isGenerated": null,
"fileSetName": "SOURCES",
"fileSetNames": ["SOURCES"],
"fileSetIndexes": [0],
"sourceGroupName": "Source Files",
"compileGroupLanguage": null,
"backtrace": [
@@ -75,7 +77,7 @@
{
"path": "^fileset/empty\\.c$",
"isGenerated": null,
"fileSetName": "SOURCES",
"fileSetNames": ["SOURCES"],
"sourceGroupName": "Source Files"
}
],
@@ -14,7 +14,8 @@
{
"path": "^fileset/empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"fileSetIndexes": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^subdir/empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/custom/CMakeFiles/custom_tgt(-(Debug|Release|RelWithDebInfo|MinSizeRel))?$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -35,7 +35,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/(custom/)?CMakeFiles/([0-9a-f]+/)?custom_tgt(-\\(CONFIG\\))?\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -109,7 +109,7 @@
{
"path": ".*cmake_pch(_[^.]+)?(\\.hxx)?\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -124,7 +124,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -145,7 +145,7 @@
{
"path": ".*/cmake_pch(_[^.]+)?\\.hxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Precompile Header File",
"compileGroupLanguage": null,
"backtrace": [
@@ -161,7 +161,7 @@
{
"path": ".*cmake_pch(_[^.]+)?(\\.hxx)?\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -176,7 +176,7 @@
{
"path": ".*cmake_pch(_[^.]+)?(\\.hxx)?\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -191,7 +191,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -212,7 +212,7 @@
{
"path": ".*/cmake_pch(_[^.]+)?\\.hxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Precompile Header File",
"compileGroupLanguage": null,
"backtrace": [
@@ -227,7 +227,7 @@
{
"path": ".*/cmake_pch(_[^.]+)?\\.hxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Precompile Header File",
"compileGroupLanguage": null,
"backtrace": [
@@ -109,7 +109,7 @@
{
"path": ".*cmake_pch(_[^.]+)?(\\.hxx)?\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -124,7 +124,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -145,7 +145,7 @@
{
"path": ".*/Debug/cmake_pch(_[^.]+)?\\.hxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Precompile Header File",
"compileGroupLanguage": null,
"backtrace": [
@@ -160,7 +160,7 @@
{
"path": ".*/Release/cmake_pch(_[^.]+)?\\.hxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Precompile Header File",
"compileGroupLanguage": null,
"backtrace": [
@@ -175,7 +175,7 @@
{
"path": ".*/MinSizeRel/cmake_pch(_[^.]+)?\\.hxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Precompile Header File",
"compileGroupLanguage": null,
"backtrace": [
@@ -190,7 +190,7 @@
{
"path": ".*/RelWithDebInfo/cmake_pch(_[^.]+)?\\.hxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Precompile Header File",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -35,7 +35,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/(object|build/cxx_object_lib\\.build)/.*/empty(\\.cxx)?\\.o(bj)?$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Object Libraries",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPIExternalSource/empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -35,7 +35,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/FileAPIExternalBuild/generated\\.cxx$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Generated Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^direct/other\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -35,7 +35,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/(direct|build/inject_direct_lib_impl\\.build)/.*/other(\\.c)?\\.o(bj)?$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Object Libraries",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.cxx$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "CXX",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/alias/CMakeFiles/ZERO_CHECK$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/alias/CMakeFiles/ZERO_CHECK\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/custom/CMakeFiles/ZERO_CHECK$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/custom/CMakeFiles/ZERO_CHECK\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/cxx/CMakeFiles/ZERO_CHECK$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/cxx/CMakeFiles/ZERO_CHECK\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/direct/CMakeFiles/ZERO_CHECK$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/direct/CMakeFiles/ZERO_CHECK\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/FileAPIExternalBuild/CMakeFiles/ZERO_CHECK$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/FileAPIExternalBuild/CMakeFiles/ZERO_CHECK\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/framework/CMakeFiles/ZERO_CHECK$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/framework/CMakeFiles/ZERO_CHECK\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/imported/CMakeFiles/ZERO_CHECK$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/imported/CMakeFiles/ZERO_CHECK\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/interface/CMakeFiles/ZERO_CHECK$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/interface/CMakeFiles/ZERO_CHECK\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/object/CMakeFiles/ZERO_CHECK$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/object/CMakeFiles/ZERO_CHECK\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -14,7 +14,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/CMakeFiles/ZERO_CHECK$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "",
"compileGroupLanguage": null,
"backtrace": [
@@ -29,7 +29,7 @@
{
"path": "^.*/Tests/RunCMake/FileAPI/codemodel-v2-build/CMakeFiles/ZERO_CHECK\\.rule$",
"isGenerated": true,
"fileSetName": null,
"fileSetNames": null,
"sourceGroupName": "CMake Rules",
"compileGroupLanguage": null,
"backtrace": [
@@ -2,13 +2,13 @@ add_library(c_headers_1 STATIC empty.c)
target_sources(c_headers_1
PUBLIC FILE_SET HEADERS BASE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}" FILES error.c other.c
PRIVATE FILE_SET a TYPE HEADERS BASE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}" FILES h1.h dir/h4.h
PRIVATE FILE_SET a TYPE HEADERS BASE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}" FILES h1.h dir/h4.h h5.h
)
target_sources(c_headers_1
PUBLIC FILE_SET b TYPE HEADERS BASE_DIRS "$<1:${CMAKE_CURRENT_SOURCE_DIR}/dir>" FILES "$<1:${CMAKE_CURRENT_SOURCE_DIR}/dir/h2.h>"
)
target_sources(c_headers_1
INTERFACE FILE_SET c TYPE HEADERS BASE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}" FILES h3.h
INTERFACE FILE_SET c TYPE HEADERS BASE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}" FILES h3.h h5.h
)
source_group("Source Files" FILES "${CMAKE_CURRENT_SOURCE_DIR}/other.c")
View File