separate_arguments ------------------ Parse command-line arguments into a semicolon-separated list. .. code-block:: cmake separate_arguments(<variable> <mode> [PROGRAM [SEPARATE_ARGS]] <args>) Parses a space-separated string ``<args>`` into a list of items, and stores this list in semicolon-separated standard form in ``<variable>``. This function is intended for parsing command-line arguments. The entire command line must be passed as one string in the argument ``<args>``. The exact parsing rules depend on the operating system. They are specified by the ``<mode>`` argument which must be one of the following keywords: ``UNIX_COMMAND`` Arguments are separated by unquoted whitespace. Both single-quote and double-quote pairs are respected. A backslash escapes the next literal character (``\"`` is ``"``); there are no special escapes (``\n`` is just ``n``). ``WINDOWS_COMMAND`` A Windows command-line is parsed using the same syntax the runtime library uses to construct argv at startup. It separates arguments by whitespace that is not double-quoted. Backslashes are literal unless they precede double-quotes. See the MSDN article `Parsing C Command-Line Arguments`_ for details. ``NATIVE_COMMAND`` .. versionadded:: 3.9 Proceeds as in ``WINDOWS_COMMAND`` mode if the host system is Windows. Otherwise proceeds as in ``UNIX_COMMAND`` mode. ``PROGRAM`` .. versionadded:: 3.19 The first item in ``<args>`` is assumed to be an executable and will be searched in the system search path or left as a full path. If not found, ``<variable>`` will be empty. Otherwise, ``<variable>`` is a list of 2 elements: 0. Absolute path of the program 1. Any command-line arguments present in ``<args>`` as a string For example: .. code-block:: cmake separate_arguments (out UNIX_COMMAND PROGRAM "cc -c main.c") * First element of the list: ``/path/to/cc`` * Second element of the list: ``" -c main.c"`` ``SEPARATE_ARGS`` When this sub-option of ``PROGRAM`` option is specified, command-line arguments will be split as well and stored in ``<variable>``. For example: .. code-block:: cmake separate_arguments (out UNIX_COMMAND PROGRAM SEPARATE_ARGS "cc -c main.c") The contents of ``out`` will be: ``/path/to/cc;-c;main.c`` .. _`Parsing C Command-Line Arguments`: https://msdn.microsoft.com/library/a1y7w461.aspx .. code-block:: cmake separate_arguments(<var>) Convert the value of ``<var>`` to a semi-colon separated list. All spaces are replaced with ';'. This helps with generating command lines.