source_group

在 IDE 项目生成中定义源文件的分组。有两种不同的签名可以创建源分组。

source_group(<name> [FILES <src>...] [REGULAR_EXPRESSION <regex>])
source_group(TREE <root> [PREFIX <prefix>] [FILES <src>...])

定义一个组,源文件将被放置在该组的项目文件中。这旨在为 Visual Studio 设置文件选项卡。该组的作用域是命令被调用的目录,并适用于在该目录中创建的目标的源文件。

选项包括

TREE

版本 3.8 新增。

CMake 将自动从 <src> 文件路径中检测需要创建的源分组,以使源分组的结构与项目中实际文件和目录的结构保持一致。 <src> 文件的路径将被截断为相对于 <root> 的路径。如果 src 中的路径不以 root 开头,则命令会失败。

PREFIX

版本 3.8 新增。

直接位于 <root> 路径中的源分组和文件将被放置在 <prefix> 源分组中。

FILES

任何明确指定的源文件都将被放置在 <name> 组中。相对路径是相对于当前源目录解释的。

REGULAR_EXPRESSION

任何名称与正则表达式匹配的源文件都将被放置在 <name> 组中。

如果一个源文件匹配多个组,则会优先选择最后一个明确使用 FILES 列出该文件的组,如果有的话。如果没有组明确列出该文件,则会优先选择最后一个其正则表达式匹配该文件的组。

组的 <name><prefix> 参数可以包含正斜杠或反斜杠来指定子组。反斜杠需要适当转义。

source_group(base/subdir ...)
source_group(outer\\inner ...)
source_group(TREE <root> PREFIX sources\\inc ...)

Added in version 3.18: 允许使用正斜杠(/)来指定子组。

为了向后兼容,简写签名

source_group(<name> <regex>)

等价于

source_group(<name> REGULAR_EXPRESSION <regex>)