Merge topic 'file-api-FILE_SET-SOURCES'

56b3136f60 fileapi: Add build properties for SOURCES file set type to codemodel

Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !12006
This commit is contained in:
Brad King
2026-05-06 13:40:52 +00:00
committed by Kitware Robot
13 changed files with 721 additions and 21 deletions

View File

@@ -1017,6 +1017,9 @@ with members:
This field was added in codemodel version 2.4.
Since codemodel version 2.11, this field additionally accounts for
``SOURCES`` file sets.
``fileSetDirectories``
Optional member that is present when ``type`` is ``fileSet``. The value
is a list of strings with the file set's base directories (determined by

View File

@@ -34,6 +34,9 @@
},
{
"$ref": "#/definitions/codemodelV2_10"
},
{
"$ref": "#/definitions/codemodelV2_11"
}
],
"definitions": {
@@ -68,7 +71,25 @@
},
"minor": {
"type": "integer",
"minimum": 10
"const": 10
}
},
"additionalProperties": false
},
"codemodelVersionV2_11": {
"type": "object",
"required": [
"major",
"minor"
],
"properties": {
"major": {
"type": "integer",
"const": 2
},
"minor": {
"type": "integer",
"minimum": 11
}
},
"additionalProperties": false
@@ -81,7 +102,22 @@
"type": "string",
"description": "Unique identifier for the target. The format is unspecified and should not be interpreted by clients."
},
"typeV2_0": {
"fileset-typeV2_5": {
"type": "string",
"enum": [
"HEADERS",
"CXX_MODULES"
]
},
"fileset-typeV2_11": {
"type": "string",
"enum": [
"HEADERS",
"CXX_MODULES",
"SOURCES"
]
},
"target-typeV2_0": {
"type": "string",
"enum": [
"EXECUTABLE",
@@ -93,7 +129,7 @@
"UTILITY"
]
},
"typeV2_9": {
"target-typeV2_9": {
"type": "string",
"enum": [
"EXECUTABLE",
@@ -530,12 +566,45 @@
"type": "string"
},
"type": {
"$ref": "#/definitions/fileset-typeV2_5"
},
"visibility": {
"type": "string",
"enum": [
"HEADERS",
"CXX_MODULES"
"PUBLIC",
"PRIVATE",
"INTERFACE"
]
},
"baseDirectories": {
"type": "array",
"minItems": 1,
"items": {
"type": "string"
},
"description": "Base directories containing the file set's files. If a directory is inside the top level source directory, its path is specified relative to that directory. Otherwise, its path is absolute."
}
},
"additionalProperties": false
}
},
"fileSetsV2_11": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"visibility",
"baseDirectories"
],
"properties": {
"name": {
"type": "string"
},
"type": {
"$ref": "#/definitions/fileset-typeV2_11"
},
"visibility": {
"type": "string",
"enum": [
@@ -1094,7 +1163,7 @@
"$ref": "#/definitions/id"
},
"type": {
"$ref": "#/definitions/typeV2_0"
"$ref": "#/definitions/target-typeV2_0"
},
"backtrace": {
"$ref": "#/definitions/backtrace"
@@ -1158,7 +1227,7 @@
"$ref": "#/definitions/id"
},
"type": {
"$ref": "#/definitions/typeV2_0"
"$ref": "#/definitions/target-typeV2_0"
},
"backtrace": {
"$ref": "#/definitions/backtrace"
@@ -1222,7 +1291,7 @@
"$ref": "#/definitions/id"
},
"type": {
"$ref": "#/definitions/typeV2_0"
"$ref": "#/definitions/target-typeV2_0"
},
"backtrace": {
"$ref": "#/definitions/backtrace"
@@ -1286,7 +1355,7 @@
"$ref": "#/definitions/id"
},
"type": {
"$ref": "#/definitions/typeV2_0"
"$ref": "#/definitions/target-typeV2_0"
},
"backtrace": {
"$ref": "#/definitions/backtrace"
@@ -1353,7 +1422,7 @@
"$ref": "#/definitions/id"
},
"type": {
"$ref": "#/definitions/typeV2_0"
"$ref": "#/definitions/target-typeV2_0"
},
"backtrace": {
"$ref": "#/definitions/backtrace"
@@ -1420,7 +1489,7 @@
"$ref": "#/definitions/id"
},
"type": {
"$ref": "#/definitions/typeV2_0"
"$ref": "#/definitions/target-typeV2_0"
},
"backtrace": {
"$ref": "#/definitions/backtrace"
@@ -1490,7 +1559,7 @@
"$ref": "#/definitions/id"
},
"type": {
"$ref": "#/definitions/typeV2_0"
"$ref": "#/definitions/target-typeV2_0"
},
"backtrace": {
"$ref": "#/definitions/backtrace"
@@ -1567,7 +1636,7 @@
"$ref": "#/definitions/id"
},
"type": {
"$ref": "#/definitions/typeV2_9"
"$ref": "#/definitions/target-typeV2_9"
},
"imported": {
"$ref": "#/definitions/importedV2_9"
@@ -1674,7 +1743,7 @@
"$ref": "#/definitions/id"
},
"type": {
"$ref": "#/definitions/typeV2_9"
"$ref": "#/definitions/target-typeV2_9"
},
"imported": {
"$ref": "#/definitions/importedV2_9"
@@ -1762,6 +1831,116 @@
}
},
"additionalProperties": false
},
"codemodelV2_11": {
"required": [
"codemodelVersion",
"name",
"id",
"type",
"paths",
"sources",
"backtraceGraph"
],
"properties": {
"codemodelVersion": {
"$ref": "#/definitions/codemodelVersionV2_11"
},
"name": {
"$ref": "#/definitions/name"
},
"id": {
"$ref": "#/definitions/id"
},
"type": {
"$ref": "#/definitions/target-typeV2_9"
},
"imported": {
"$ref": "#/definitions/importedV2_9"
},
"local": {
"$ref": "#/definitions/localV2_9"
},
"abstract": {
"$ref": "#/definitions/abstractV2_9"
},
"backtrace": {
"$ref": "#/definitions/backtrace"
},
"folder": {
"$ref": "#/definitions/folder"
},
"paths": {
"$ref": "#/definitions/paths"
},
"nameOnDisk": {
"$ref": "#/definitions/nameOnDisk"
},
"artifacts": {
"$ref": "#/definitions/artifacts"
},
"isGeneratorProvided": {
"$ref": "#/definitions/isGeneratorProvided"
},
"install": {
"$ref": "#/definitions/install"
},
"launchers": {
"$ref": "#/definitions/launchersV2_7"
},
"link": {
"$ref": "#/definitions/link"
},
"archive": {
"$ref": "#/definitions/archive"
},
"debugger": {
"$ref": "#/definitions/debuggerV2_8"
},
"dependencies": {
"$ref": "#/definitions/dependencies"
},
"linkLibraries": {
"$ref": "#/definitions/linkLibrariesV2_9"
},
"interfaceLinkLibraries": {
"$ref": "#/definitions/interfaceLinkLibrariesV2_9"
},
"compileDependencies": {
"$ref": "#/definitions/compileDependenciesV2_9"
},
"interfaceCompileDependencies": {
"$ref": "#/definitions/interfaceCompileDependenciesV2_9"
},
"objectDependencies": {
"$ref": "#/definitions/onlyTargetDependenciesArrayV2_9"
},
"orderDependencies": {
"$ref": "#/definitions/onlyTargetDependenciesArrayV2_9"
},
"fileSets": {
"$ref": "#/definitions/fileSetsV2_11"
},
"sources": {
"$ref": "#/definitions/sourcesV2_5"
},
"interfaceSources": {
"$ref": "#/definitions/interfaceSourcesV2_10"
},
"symbolic": {
"$ref": "#/definitions/symbolicV2_9"
},
"sourceGroups": {
"$ref": "#/definitions/sourceGroupsV2_10"
},
"compileGroups": {
"$ref": "#/definitions/compileGroupsV2_6"
},
"backtraceGraph": {
"$ref": "#/definitions/backtraceGraph"
}
},
"additionalProperties": false
}
}
}

View File

@@ -0,0 +1,8 @@
file-api-FILE_SET-SOURCES
-------------------------
* The :manual:`cmake-file-api(7)` "codemodel" version 2 object has been
updated to 2.11.
* The :manual:`cmake-file-api(7)` "codemodel" version 2 "installers" object's
optional ``fileSetType`` field gained a new ``SOURCES`` value to incorporate
the new :ref:`file set <file sets>` ``SOURCES`` type in codemodel replies.

View File

@@ -823,7 +823,7 @@ std::string cmFileAPI::NoSupportedVersion(
// Update the following files as well when updating this constant:
// Help/manual/cmake-file-api.7.rst
// Tests/RunCMake/FileAPI/codemodel-v2-check.py (check_objects())
static unsigned int const CodeModelV2Minor = 10;
static unsigned int const CodeModelV2Minor = 11;
void cmFileAPI::BuildClientRequestCodeModel(
ClientRequest& r, std::vector<RequestVersion> const& versions)

View File

@@ -1495,6 +1495,9 @@ CompileData Target::BuildCompileData(cmSourceFile* sf)
cmGeneratorExpressionInterpreter genexInterpreter(lg, this->Config, this->GT,
fd.Language);
cmGeneratorFileSet const* fileSet =
GT->GetFileSetForSource(this->Config, sf);
std::string const COMPILE_FLAGS("COMPILE_FLAGS");
if (cmValue cflags = sf->GetProperty(COMPILE_FLAGS)) {
std::string flags = genexInterpreter.Evaluate(*cflags, COMPILE_FLAGS);
@@ -1511,6 +1514,19 @@ CompileData Target::BuildCompileData(cmSourceFile* sf)
BT<std::string> opt(tmp, tmpOpt.Backtrace);
fd.Flags.emplace_back(this->ToJBT(opt));
}
// File set compile options, if any
if (fileSet) {
for (BT<std::string> const& tmpOpt : fileSet->BelongsTo(this->GT)
? fileSet->GetCompileOptions(this->Config, fd.Language)
: fileSet->GetInterfaceCompileOptions(this->Config, fd.Language)) {
// We need to use the AppendCompileOptions method so we handle situations
// where backtrace entries have list and properly escape flags.
std::string tmp;
lg->AppendCompileOptions(tmp, tmpOpt.Value);
BT<std::string> opt(tmp, tmpOpt.Backtrace);
fd.Flags.emplace_back(this->ToJBT(opt));
}
}
// Add precompile headers compile options.
std::vector<std::string> pchArchs =
@@ -1548,9 +1564,31 @@ CompileData Target::BuildCompileData(cmSourceFile* sf)
fd.Flags.emplace_back(this->ToJBT(opt));
}
std::string const INCLUDE_DIRECTORIES("INCLUDE_DIRECTORIES");
// Add include directories from file set properties.
if (fileSet) {
for (BT<std::string> const& tmpInclude : fileSet->BelongsTo(this->GT)
? fileSet->GetIncludeDirectories(this->Config, fd.Language)
: fileSet->GetInterfaceIncludeDirectories(this->Config,
fd.Language)) {
// We need to use the AppendIncludeDirectories method so we handle
// situations where backtrace entries have lists.
std::vector<std::string> tmp;
lg->AppendIncludeDirectories(tmp, tmpInclude.Value, *sf);
for (std::string& i : tmp) {
bool const isSystemInclude =
this->GT->IsSystemIncludeDirectory(i, this->Config, fd.Language);
BT<std::string> include(i, tmpInclude.Backtrace);
if (this->GT->IsApple() && cmSystemTools::IsPathToFramework(i)) {
fd.Frameworks.emplace_back(this->ToJBT(include), isSystemInclude);
} else {
fd.Includes.emplace_back(this->ToJBT(include), isSystemInclude);
}
}
}
}
// Add include directories from source file properties.
{
std::string const INCLUDE_DIRECTORIES("INCLUDE_DIRECTORIES");
for (BT<std::string> tmpInclude : sf->GetIncludeDirectories()) {
tmpInclude.Value =
genexInterpreter.Evaluate(tmpInclude.Value, INCLUDE_DIRECTORIES);
@@ -1597,7 +1635,25 @@ CompileData Target::BuildCompileData(cmSourceFile* sf)
genexInterpreter.Evaluate(*config_defs, COMPILE_DEFINITIONS));
}
fd.Defines.reserve(fileDefines.size() + configFileDefines.size());
std::set<BT<std::string>> fileSetDefines;
if (fileSet) {
for (BT<std::string> const& tmpDef : fileSet->BelongsTo(this->GT)
? fileSet->GetCompileDefinitions(this->Config, fd.Language)
: fileSet->GetInterfaceCompileDefinitions(this->Config,
fd.Language)) {
// We need to use the AppendDefines method so we handle situations where
// backtrace entries have lists.
std::set<std::string> tmp;
lg->AppendDefines(tmp, tmpDef.Value);
for (std::string const& i : tmp) {
BT<std::string> def(i, tmpDef.Backtrace);
fileSetDefines.insert(def);
}
}
}
fd.Defines.reserve(fileDefines.size() + configFileDefines.size() +
fileSetDefines.size());
for (BT<std::string> const& def : fileDefines) {
fd.Defines.emplace_back(this->ToJBT(def));
@@ -1607,6 +1663,10 @@ CompileData Target::BuildCompileData(cmSourceFile* sf)
fd.Defines.emplace_back(d, JBTIndex());
}
for (BT<std::string> const& def : fileSetDefines) {
fd.Defines.emplace_back(this->ToJBT(def));
}
return fd;
}

View File

@@ -1 +1 @@
^{"debugger":(true|false),"fileApi":{"requests":\[{"kind":"codemodel","version":\[{"major":2,"minor":10}]},{"kind":"configureLog","version":\[{"major":1,"minor":0}]},{"kind":"cache","version":\[{"major":2,"minor":0}]},{"kind":"cmakeFiles","version":\[{"major":1,"minor":1}]},{"kind":"toolchains","version":\[{"major":1,"minor":1}]}]},"generators":\[.*\],"serverMode":false,"tls":(true|false),"version":{.*}}$
^{"debugger":(true|false),"fileApi":{"requests":\[{"kind":"codemodel","version":\[{"major":2,"minor":11}]},{"kind":"configureLog","version":\[{"major":1,"minor":0}]},{"kind":"cache","version":\[{"major":2,"minor":0}]},{"kind":"cmakeFiles","version":\[{"major":1,"minor":1}]},{"kind":"toolchains","version":\[{"major":1,"minor":1}]}]},"generators":\[.*\],"serverMode":false,"tls":(true|false),"version":{.*}}$

View File

@@ -13,7 +13,7 @@ def check_objects(o, g):
assert is_list(o)
assert len(o) == 1
major = 2
minor = 10
minor = 11
check_index_object(o[0], "codemodel", major, minor, check_object_codemodel(g, major, minor))
def check_backtrace(t, b, backtrace):
@@ -1077,6 +1077,8 @@ def gen_check_build_system_targets(c, g, inSource):
read_codemodel_json_data("targets/c_headers_1.json"),
read_codemodel_json_data("targets/c_headers_2.json"),
read_codemodel_json_data("targets/c_sources_1.json"),
read_codemodel_json_data("targets/c_sources_2.json"),
]
if sys.platform == "darwin":

View File

@@ -5,7 +5,9 @@
"childSources": null,
"targetIds": [
"^c_headers_1::@6b8db101d64c125f29fe$",
"^c_headers_2::@6b8db101d64c125f29fe$"
"^c_headers_2::@6b8db101d64c125f29fe$",
"^c_sources_1::@6b8db101d64c125f29fe$",
"^c_sources_2::@6b8db101d64c125f29fe$"
],
"abstractTargetIds": null,
"projectName": "codemodel-v2",

View File

@@ -32,7 +32,9 @@
"^c_static_exe::@6890427a1f51a3e7e1df$",
"^c_subdir::@6890427a1f51a3e7e1df$",
"^c_headers_1::@6b8db101d64c125f29fe$",
"^c_headers_2::@6b8db101d64c125f29fe$"
"^c_headers_2::@6b8db101d64c125f29fe$",
"^c_sources_1::@6b8db101d64c125f29fe$",
"^c_sources_2::@6b8db101d64c125f29fe$"
],
"abstractTargetIds": [
"^interface_lib::@6890427a1f51a3e7e1df$"

View File

@@ -229,6 +229,14 @@
"id": "^c_headers_2::@6b8db101d64c125f29fe$",
"backtrace": null
},
{
"id": "^c_sources_1::@6b8db101d64c125f29fe$",
"backtrace": null
},
{
"id": "^c_sources_2::@6b8db101d64c125f29fe$",
"backtrace": null
},
{
"id": "^static_framework::@217a96c3a62328a73ef4$",
"backtrace": null
@@ -420,6 +428,14 @@
"id": "^c_headers_2::@6b8db101d64c125f29fe$",
"backtrace": null
},
{
"id": "^c_sources_1::@6b8db101d64c125f29fe$",
"backtrace": null
},
{
"id": "^c_sources_2::@6b8db101d64c125f29fe$",
"backtrace": null
},
{
"id": "^static_framework::@217a96c3a62328a73ef4$",
"backtrace": null

View File

@@ -0,0 +1,188 @@
{
"name": "c_sources_1",
"id": "^c_sources_1::@6b8db101d64c125f29fe$",
"directorySource": "^fileset$",
"projectName": "codemodel-v2",
"type": "STATIC_LIBRARY",
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": [
{
"name": "SOURCES",
"type": "SOURCES",
"visibility": "PRIVATE",
"baseDirectories": [
"^fileset$"
]
},
{
"name": "public_srcs",
"type": "SOURCES",
"visibility": "PUBLIC",
"baseDirectories": [
"^fileset$"
]
}
],
"sources": [
{
"path": "^fileset/empty\\.c$",
"isGenerated": null,
"fileSetName": "public_srcs",
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 40,
"command": "target_sources",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
]
},
{
"path": "^fileset/other\\.c$",
"isGenerated": null,
"fileSetName": "SOURCES",
"sourceGroupName": "Source Files",
"compileGroupLanguage": null,
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 35,
"command": "target_sources",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
]
}
],
"interfaceSources": [
{
"path": "^fileset/empty\\.c$",
"isGenerated": null,
"fileSetName": "SOURCES",
"sourceGroupName": "Source Files"
}
],
"sourceGroups": [
{
"name": "Source Files",
"sourcePaths": [
"^fileset/empty\\.c$",
"^fileset/other\\.c$"
],
"interfaceSourcePaths": [
"^fileset/empty\\.c$"
]
}
],
"compileGroups": [
{
"language": "C",
"sourcePaths": [
"^fileset/empty\\.c$"
],
"includes": [
{
"path": "^.*/Tests/RunCMake/FileAPI/fileset/dir$",
"isSystem": null,
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 46,
"command": "set_property",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
]
}
],
"frameworks": null,
"defines": [
{
"define": "DEF2",
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 43,
"command": "set_property",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
]
},
{
"define": "_MBCS",
"backtrace": null
}
],
"compileCommandFragments": null
}
],
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 33,
"command": "add_library",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
],
"folder": null,
"nameOnDisk": "^(lib)?c_sources_1\\.(a|lib|l)$",
"artifacts": [
{
"path": "^fileset/((Debug|Release|RelWithDebInfo|MinSizeRel)/)?(lib)?c_sources_1\\.(a|lib|l)$",
"_dllExtra": false
}
],
"build": "^fileset$",
"source": "^fileset$",
"install": null,
"link": null,
"archive": {
"lto": null
},
"dependencies": [
{
"id": "^ZERO_CHECK::@6890427a1f51a3e7e1df$",
"backtrace": null
}
],
"linkLibraries": null,
"interfaceLinkLibraries": null,
"compileDependencies": null,
"interfaceCompileDependencies": null,
"objectDependencies": null,
"orderDependencies": null
}

View File

@@ -0,0 +1,218 @@
{
"name": "c_sources_2",
"id": "^c_sources_2::@6b8db101d64c125f29fe$",
"directorySource": "^fileset$",
"projectName": "codemodel-v2",
"type": "STATIC_LIBRARY",
"imported": null,
"local": null,
"abstract": null,
"symbolic": null,
"isGeneratorProvided": null,
"fileSets": null,
"sources": [
{
"path": "^fileset/empty\\.c$",
"isGenerated": null,
"fileSetName": null,
"sourceGroupName": "Source Files",
"compileGroupLanguage": "C",
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 50,
"command": "target_link_libraries",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
]
}
],
"interfaceSources": null,
"sourceGroups": [
{
"name": "Source Files",
"sourcePaths": [
"^fileset/empty\\.c$"
],
"interfaceSourcePaths": null
}
],
"compileGroups": [
{
"language": "C",
"sourcePaths": [
"^fileset/empty\\.c$"
],
"includes": [
{
"path": "^.*/Tests/RunCMake/FileAPI/fileset/dir$",
"isSystem": null,
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 47,
"command": "set_property",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
]
}
],
"frameworks": null,
"defines": [
{
"define": "DEF3",
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 44,
"command": "set_property",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
]
},
{
"define": "_MBCS",
"backtrace": null
}
],
"compileCommandFragments": null
}
],
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 49,
"command": "add_library",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
],
"folder": null,
"nameOnDisk": "^(lib)?c_sources_2\\.(a|lib|l)$",
"artifacts": [
{
"path": "^fileset/((Debug|Release|RelWithDebInfo|MinSizeRel)/)?(lib)?c_sources_2\\.(a|lib|l)$",
"_dllExtra": false
}
],
"build": "^fileset$",
"source": "^fileset$",
"install": null,
"link": null,
"archive": {
"lto": null
},
"dependencies": [
{
"id": "^ZERO_CHECK::@6890427a1f51a3e7e1df$",
"backtrace": null
},
{
"id": "^c_sources_1::@6b8db101d64c125f29fe$",
"fragment": null,
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 50,
"command": "target_link_libraries",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
],
"fromDependency": null
}
],
"linkLibraries": [
{
"id": "^c_sources_1::@6b8db101d64c125f29fe$",
"fragment": null,
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 50,
"command": "target_link_libraries",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
],
"fromDependency": null
}
],
"interfaceLinkLibraries": [
{
"id": "^c_sources_1::@6b8db101d64c125f29fe$",
"fragment": null,
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 50,
"command": "target_link_libraries",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
]
}
],
"compileDependencies": [
{
"id": "^c_sources_1::@6b8db101d64c125f29fe$",
"fragment": null,
"backtrace": [
{
"file": "^fileset/CMakeLists\\.txt$",
"line": 50,
"command": "target_link_libraries",
"hasParent": true
},
{
"file": "^fileset/CMakeLists\\.txt$",
"line": null,
"command": null,
"hasParent": false
}
],
"fromDependency": null
}
],
"interfaceCompileDependencies": null,
"objectDependencies": null,
"orderDependencies": null
}

View File

@@ -26,3 +26,25 @@ install(TARGETS c_headers_1
FILE_SET d
)
install(TARGETS c_headers_2)
#
# SOURCES file set type
#
add_library(c_sources_1 STATIC)
target_sources(c_sources_1
PRIVATE FILE_SET SOURCES BASE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}" FILES other.c
)
set_property(FILE_SET SOURCES TARGET c_sources_1 PROPERTY COMPILE_DEFINITIONS DEF1)
target_sources(c_sources_1
PUBLIC FILE_SET public_srcs TYPE SOURCES BASE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}" FILES empty.c
)
set_property(FILE_SET public_srcs TARGET c_sources_1 PROPERTY COMPILE_DEFINITIONS DEF2)
set_property(FILE_SET public_srcs TARGET c_sources_1 PROPERTY INTERFACE_COMPILE_DEFINITIONS DEF3)
set_property(FILE_SET public_srcs TARGET c_sources_1 PROPERTY INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/dir")
set_property(FILE_SET public_srcs TARGET c_sources_1 PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/dir")
add_library(c_sources_2 STATIC)
target_link_libraries(c_sources_2 PRIVATE c_sources_1)