Spec-Zone.ru › CMake 3.12

string

Строковые операции.

Резюме

Search and Replace
  string(FIND <string> <substring> <out-var> [...])
  string(REPLACE <match-string> <replace-string> <out-var> <input>...)

Regular Expressions
  string(REGEX MATCH <match-regex> <out-var> <input>...)
  string(REGEX MATCHALL <match-regex> <out-var> <input>...)
  string(REGEX REPLACE <match-regex> <replace-expr> <out-var> <input>...)

Manipulation
  string(APPEND <string-var> [<input>...])
  string(PREPEND <string-var> [<input>...])
  string(CONCAT <out-var> [<input>...])
  string(JOIN <glue> <out-var> [<input>...])
  string(TOLOWER <string1> <out-var>)
  string(TOUPPER <string1> <out-var>)
  string(LENGTH <string> <out-var>)
  string(SUBSTRING <string> <begin> <length> <out-var>)
  string(STRIP <string> <out-var>)
  string(GENEX_STRIP <string> <out-var>)

Comparison
  string(COMPARE <op> <string1> <string2> <out-var>)

Hashing
  string(<HASH> <out-var> <input>)

Generation
  string(ASCII <number>... <out-var>)
  string(CONFIGURE <string1> <out-var> [...])
  string(MAKE_C_IDENTIFIER <string> <out-var>)
  string(RANDOM [<option>...] <out-var>)
  string(TIMESTAMP <out-var> [<format string>] [UTC])
  string(UUID <out-var> ...)

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

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

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

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

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

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

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

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

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

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

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(JOIN <glue> <output variable> [<input>...])

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

Для объединения элементов списка предпочтительно использовать оператор JOIN из команды list(). Это позволяет элементам содержать специальные символы, такие как ;.

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

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

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.

Генерация

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

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

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

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

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

Преобразует каждый не буквенно-цифровой символ в <input string> в символ нижнего подчеркивания и сохраняет результат в <output variable> Если первый символ строки является цифрой, в результат также будет вставлено нижнее подчеркивание.

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.

Примечание

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

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

Spec-Zone.ru

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