Spec-Zone.ru › CMake 3.8

string

  • Поиск и замена
    • НАЙТИ
    • ЗАМЕНИТЬ
  • Регулярные выражения
    • REGEX MATCH
    • REGEX MATCHALL
    • REGEX REPLACE
    • Спецификация регулярных выражений
  • Обработка
    • ДОБАВИТЬ
    • ОБЪЕДИНИТЬ
    • НИЖНИЙ_РЕГИСТР
    • ВЕРХНИЙ_РЕГИСТР
    • ДЛИНА
    • ПОДСТРОКА
    • УДАЛИТЬ_ПРОБЕЛЫ
    • GENEX_УДАЛИТЬ_ПРОБЕЛЫ
  • Сравнение
  • Хеширование
  • Генерация
    • ASCII
    • КОНФИГУРИРОВАТЬ
    • СЛУЧАЙНЫЙ
    • ВРЕМЯ
    • UUID

Операции со строками.

Поиск и замена

НАЙТИ

string(FIND <string> <substring> <output variable> [REVERSE])

Возвращает позицию, где в предоставленной строке была найдена заданная подстрока. Если был использован флаг REVERSE, команда будет искать позицию последнего вхождения указанной подстроки. Если подстрока не найдена, возвращается позиция -1.

ЗАМЕНИТЬ

string(REPLACE <match_string>
       <replace_string> <output variable>
       <input> [<input>...])

Заменяет все вхождения match_string в входных данных на replace_string и сохраняет результат в выходные данные.

Регулярные выражения

REGEX MATCH

string(REGEX MATCH <regular_expression>
       <output variable> <input> [<input>...])

Сопоставляет регулярное выражение один раз и сохраняет совпадение в переменной вывода. Все <input> аргументы конкатенируются перед сопоставлением.

REGEX MATCHALL

string(REGEX MATCHALL <regular_expression>
       <output variable> <input> [<input>...])

Сопоставляет регулярное выражение как можно большее количество раз и сохраняет совпадения в переменной вывода в виде списка. Все <input> аргументы конкатенируются перед сопоставлением.

REGEX REPLACE

string(REGEX REPLACE <regular_expression>
       <replace_expression> <output variable>
       <input> [<input>...])

Сопоставляет регулярное выражение как можно большее количество раз и подставляет выражение замены для совпадения в выходные данные. Все <input> аргументы конкатенируются перед сопоставлением.

Выражение замены может ссылаться на подвыражения совпадения, ограниченные скобками, используя \1, \2, …, \9. Обратите внимание, что в коде CMake требуются две обратные косые черты (\\1) для получения обратной косой черты через обработку аргументов.

Спецификация регулярных выражений

Следующие символы имеют специальное значение в регулярных выражениях:

^         Matches at beginning of input
$         Matches at end of input
.         Matches any single character
[ ]       Matches any character(s) inside the brackets
[^ ]      Matches any character(s) not inside the brackets
 -        Inside brackets, specifies an inclusive range between
          characters on either side e.g. [a-f] is [abcdef]
          To match a literal - using brackets, make it the first
          or the last character e.g. [+*/-] matches basic
          mathematical operators.
*         Matches preceding pattern zero or more times
+         Matches preceding pattern one or more times
?         Matches preceding pattern zero or once only
|         Matches a pattern on either side of the |
()        Saves a matched subexpression, which can be referenced
          in the REGEX REPLACE operation. Additionally it is saved
          by all regular expression-related commands, including
          e.g. if( MATCHES ), in the variables CMAKE_MATCH_(0..9).

*, + и ? имеют более высокий приоритет, чем конкатенация. | имеет более низкий приоритет, чем конкатенация. Это означает, что регулярное выражение ^ab+d$ соответствует abbd, но не ababd, а регулярное выражение ^(ab|cd)$ соответствует ab, но не abd.

Обработка

ДОБАВИТЬ

string(APPEND <string variable> [<input>...])

Добавляет все входные аргументы к строке.

ОБЪЕДИНИТЬ

string(CONCAT <output variable> [<input>...])

Объединяет все входные аргументы вместе и сохраняет результат в указанной переменной вывода.

НИЖНИЙ_РЕГИСТР

string(TOLOWER <string1> <output variable>)

Преобразует строку в символы нижнего регистра.

ВЕРХНИЙ_РЕГИСТР

string(TOUPPER <string1> <output variable>)

Преобразует строку в символы верхнего регистра.

ДЛИНА

string(LENGTH <string> <output variable>)

Сохраняет в переменной вывода длину заданной строки.

ПОДСТРОКА

string(SUBSTRING <string> <begin> <length> <output variable>)

Сохраняет в переменной вывода подстроку заданной строки. Если длина равна -1, возвращается остаток строки, начиная с начала. Если строка короче, чем длина, вместо нее используется конец строки.

Примечание

CMake 3.1 и ниже сообщали об ошибке, если длина указывала на позицию за пределами строки.

УДАЛИТЬ_ПРОБЕЛЫ

string(STRIP <string> <output variable>)

Сохраняет в переменной вывода подстроку заданной строки, из которой удалены начальные и конечные пробелы.

GENEX_УДАЛИТЬ_ПРОБЕЛЫ

string(GENEX_STRIP <input string> <output variable>)

Удаляет любые generator expressions из input string и сохраняет результат в output variable.

Сравнение

string(COMPARE LESS <string1> <string2> <output variable>)
string(COMPARE GREATER <string1> <string2> <output variable>)
string(COMPARE EQUAL <string1> <string2> <output variable>)
string(COMPARE NOTEQUAL <string1> <string2> <output variable>)
string(COMPARE LESS_EQUAL <string1> <string2> <output variable>)
string(COMPARE GREATER_EQUAL <string1> <string2> <output variable>)

Сравнивает строки и сохраняет значение true или false в переменную вывода.

Хеширование

string(<HASH> <output variable> <input>)

Вычисляет криптографический хеш входной строки. Поддерживаемые имена алгоритмов <HASH>:

MD5
Алгоритм хэширования сообщений 5, RFC 1321.
SHA1
Алгоритм хэширования США 1, RFC 3174.
SHA224
Алгоритмы хэширования США, RFC 4634.
SHA256
Алгоритмы хэширования США, RFC 4634.
SHA384
Алгоритмы хэширования США, RFC 4634.
SHA512
Алгоритмы хэширования США, RFC 4634.
SHA3_224
Keccak SHA-3.
SHA3_256
Keccak SHA-3.
SHA3_384
Keccak SHA-3.
SHA3_512
Keccak SHA-3.

Генерация

ASCII

string(ASCII <number> [<number> ...] <output variable>)

Преобразует все числа в соответствующие символы ASCII.

КОНФИГУРИРОВАТЬ

string(CONFIGURE <string1> <output variable>
       [@ONLY] [ESCAPE_QUOTES])

Преобразует строку так же, как configure_file() преобразует файл.

СЛУЧАЙНЫЙ

string(RANDOM [LENGTH <length>] [ALPHABET <alphabet>]
       [RANDOM_SEED <seed>] <output variable>)

Возвращает случайную строку заданной длины, состоящую из символов из заданного алфавита. По умолчанию длина — 5 символов, а алфавит — все цифры и буквы верхнего и нижнего регистра. Если задано целое число RANDOM_SEED, его значение будет использовано для инициализации генератора случайных чисел.

ВРЕМЯ

string(TIMESTAMP <output variable> [<format string>] [UTC])

Записывает строковое представление текущей даты и/или времени в переменную вывода.

Если команда не сможет получить метку времени, переменная вывода будет установлена в пустую строку “”.

Необязательный флаг UTC запрашивает представление текущей даты/времени в формате Coordinated Universal Time (UTC), а не в локальном времени.

Необязательный <format string> может содержать следующие спецификаторы формата:

%%        A literal percent sign (%).
%d        The day of the current month (01-31).
%H        The hour on a 24-hour clock (00-23).
%I        The hour on a 12-hour clock (01-12).
%j        The day of the current year (001-366).
%m        The month of the current year (01-12).
%b        Abbreviated month name (e.g. Oct).
%M        The minute of the current hour (00-59).
%s        Seconds since midnight (UTC) 1-Jan-1970 (UNIX time).
%S        The second of the current minute.
          60 represents a leap second. (00-60)
%U        The week number of the current year (00-53).
%w        The day of the current week. 0 is Sunday. (0-6)
%a        Abbreviated weekday name (e.g. Fri).
%y        The last two digits of the current year (00-99)
%Y        The current year.

Неизвестные спецификаторы формата будут проигнорированы и скопированы в вывод как есть.

Если явный <format string> не задан, он будет по умолчанию:

%Y-%m-%dT%H:%M:%S    for local time.
%Y-%m-%dT%H:%M:%SZ   for UTC.
string(MAKE_C_IDENTIFIER <input string> <output variable>)

Записывает строку, которую можно использовать в качестве идентификатора в C.

Примечание

Если переменная окружения SOURCE_DATE_EPOCH задана, её значение будет использоваться вместо текущего времени. Подробнее см. https://reproducible-builds.org/specs/source-date-epoch/.

UUID

string(UUID <output variable> NAMESPACE <namespace> NAME <name>
       TYPE <MD5|SHA1> [UPPER])

Создаёт универсальный уникальный идентификатор (также известный как GUID) в соответствии со спецификацией RFC4122 на основе хэша объединённых значений <namespace> (которое само должно быть допустимым UUID) и <name>. Алгоритм хеширования может быть либо MD5 (UUID версии 3), либо SHA1 (UUID версии 5). UUID имеет формат xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, где каждый x представляет собой символ нижнего регистра в шестнадцатеричной системе счисления. При необходимости, верхний регистр можно запросить с помощью необязательного флага UPPER.

© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.8/command/string.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API