Spec-Zone.ru › CMake 3.7

string

  • Поиск и замена
    • НАЙТИ
    • ЗАМЕНИТЬ
  • Регулярные выражения
    • REGEX СОПОСТАВЛЕНИЕ
    • REGEX ВСЕ СОПОСТАВЛЕНИЯ
    • REGEX ЗАМЕНА
    • Спецификация регулярных выражений
  • Обработка
    • ДОБАВИТЬ
    • ОБЪЕДИНИТЬ
    • НИЖНИЙ РЕГИСТР
    • ВЕРХНИЙ РЕГИСТР
    • ДЛИНА
    • ПОДСТРОКА
    • УДАЛИТЬ ПРОБЕЛЫ
    • 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 СОПОСТАВЛЕНИЕ

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

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

REGEX ВСЕ СОПОСТАВЛЕНИЯ

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

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

REGEX ЗАМЕНА

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(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512>
       <output variable> <input>)

Вычисляет криптографический хеш входной строки.

Генерация

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> может содержать следующие спецификаторы формата:

%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.

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.7/command/string.html

Spec-Zone.ru

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