cmake/Help/command/source_group.rst

72 lines
2.2 KiB
ReStructuredText
Raw Normal View History

2014-08-03 19:52:23 +02:00
source_group
------------
Define a grouping for source files in IDE project generation.
2017-04-14 19:02:05 +02:00
There are two different signatures to create source groups.
2014-08-03 19:52:23 +02:00
2019-11-11 23:01:05 +01:00
.. code-block:: cmake
2014-08-03 19:52:23 +02:00
source_group(<name> [FILES <src>...] [REGULAR_EXPRESSION <regex>])
2017-04-14 19:02:05 +02:00
source_group(TREE <root> [PREFIX <prefix>] [FILES <src>...])
2014-08-03 19:52:23 +02:00
Defines a group into which sources will be placed in project files.
This is intended to set up file tabs in Visual Studio.
2021-09-14 00:13:48 +02:00
The group is scoped in the directory where the command is called,
and applies to sources in targets created in that directory.
2014-08-03 19:52:23 +02:00
The options are:
2017-04-14 19:02:05 +02:00
``TREE``
2021-09-14 00:13:48 +02:00
.. versionadded:: 3.8
2017-04-14 19:02:05 +02:00
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>``
2021-11-20 13:41:27 +01:00
files will be cut to be relative to ``<root>``. The command fails if the
paths within ``src`` do not start with ``root``.
2017-04-14 19:02:05 +02:00
``PREFIX``
2021-09-14 00:13:48 +02:00
.. versionadded:: 3.8
2017-04-14 19:02:05 +02:00
Source group and files located directly in ``<root>`` path, will be placed
in ``<prefix>`` source groups.
2014-08-03 19:52:23 +02:00
``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.
2020-08-30 11:54:41 +02:00
The ``<name>`` of the group and ``<prefix>`` argument may contain forward
slashes or backslashes to specify subgroups. Backslashes need to be escaped
appropriately:
2014-08-03 19:52:23 +02:00
.. code-block:: cmake
2020-08-30 11:54:41 +02:00
source_group(base/subdir ...)
2014-08-03 19:52:23 +02:00
source_group(outer\\inner ...)
2017-04-14 19:02:05 +02:00
source_group(TREE <root> PREFIX sources\\inc ...)
2014-08-03 19:52:23 +02:00
2021-09-14 00:13:48 +02:00
.. versionadded:: 3.18
Allow using forward slashes (``/``) to specify subgroups.
2014-08-03 19:52:23 +02:00
For backwards compatibility, the short-hand signature
.. code-block:: cmake
source_group(<name> <regex>)
is equivalent to
.. code-block:: cmake
source_group(<name> REGULAR_EXPRESSION <regex>)