Spec-Zone.ru › CMake 3.11

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

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

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

^
Сопоставляет начало входных данных
$
Сопоставляет конец входных данных
.
Сопоставляет любой отдельный символ
[ ]
Сопоставляет любые символы внутри скобок
[^ ]
Сопоставляет любые символы, не находящиеся внутри скобок
-
Внутри скобок, задает диапазон включительно между символами по обе стороны, например, [a-f] это [abcdef] Чтобы сопоставить литеранльную - используя скобки, сделайте её первым или последним символом, например, [+*/-] сопоставляет базовые математические операторы.
*
Сопоставляет предыдущий шаблон ноль или более раз
+
Сопоставляет предыдущий шаблон один или более раз
?
Сопоставляет предыдущий шаблон ноль или один раз
|
Сопоставляет шаблон по обе стороны от |
()
Сохраняет сопоставленное подвыражение, которое можно использовать в операции REGEX REPLACE. Кроме того, оно сохраняется всеми командами, связанными с регулярными выражениями, включая, например, if(MATCHES), в переменных CMAKE_MATCH_<n> для <n> 0..9.

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

Обработка

ДОБАВИТЬ

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

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

ВСТАВИТЬ В НАЧАЛО

string(PREPEND <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
Алгоритм Message-Digest 5, RFC 1321.
SHA1
Алгоритм US Secure Hash 1, RFC 3174.
SHA224
Алгоритмы US Secure Hash, RFC 4634.
SHA256
Алгоритмы US Secure Hash, RFC 4634.
SHA384
Алгоритмы US Secure Hash, RFC 4634.
SHA512
Алгоритмы US Secure Hash, 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).
%B        Full month name (e.g. October).
%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).
%A        Full weekday name (e.g. Friday).
%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.11/command/string.html

Spec-Zone.ru

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