source_group — CMake 3.17.2 Documentation

# source_group

Define a grouping for source files in IDE project generation. There are two different signatures to create source groups.

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

Defines a group into which sources will be placed in project files. This is intended to set up file tabs in Visual Studio. The options are:

`TREE`
  CMake will automatically detect, from `<src>` files paths, source groups it needs to create, to keep structure of source groups analogically to the actual files and directories structure in the project. Paths of `<src>` files will be cut to be relative to `<root>`.
`PREFIX`
  Source group and files located directly in `<root>` path, will be placed in `<prefix>` source groups.
`FILES`
  Any source file specified explicitly will be placed in group `<name>`. Relative paths are interpreted with respect to the current source directory.
`REGULAR_EXPRESSION`
  Any source file whose name matches the regular expression will be placed in group `<name>`.

If a source file matches multiple groups, the last group that explicitly lists the file with `FILES` will be favored, if any. If no group explicitly lists the file, the last group whose regular expression matches the file will be favored.

The `<name>` of the group and `<prefix>` argument may contain backslashes to specify subgroups:

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

For backwards compatibility, the short-hand signature

    source_group(<name> <regex>)

is equivalent to

    source_group(<name> REGULAR_EXPRESSION <regex>)