Spec-Zone.ru › CMake 3.10

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, возвращается остаток строки, начиная с begin. Если строка короче, чем length, используется конец строки.

Примечание

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 Message-Digest, RFC 1321.
SHA1
Алгоритм 1 US Secure Hash, 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.10/command/string.html

Spec-Zone.ru

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