Spec-Zone.ru › CMake 3.13

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

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

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

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

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

Язык CMake Последовательности экранирования такие как \t, \r, \n, и \\ могут быть использованы для создания буквальных табуляций, возвратов каретки, новых строк и обратных косых черт (соответственно) для передачи в регулярное выражение. Например:

  • Процитированный аргумент "[ \t\r\n]" задаёт регулярное выражение, которое соответствует любому одиночному пробельному символу.
  • Процитированный аргумент "[/\\]" задаёт регулярное выражение, которое соответствует одиночной прямой косой черте / или обратной косой черте \.
  • Процитированный аргумент "[A-Za-z0-9_]" задаёт регулярное выражение, которое соответствует любому одиночному символу слова в локали C.
  • Процитированный аргумент "\\(\\a\\+b\\)" задаёт регулярное выражение, которое соответствует точной строке (a+b). Каждая \\ разбирается в процитированном аргументе как просто \, поэтому само регулярное выражение фактически является \(\a\+\b\). Это альтернативно может быть указано в Аргументе в скобках без необходимости экранирования обратных косых черт, например [[\(\a\+\b\)]].

Обработка

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
Алгоритм 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.

Генерация

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

Spec-Zone.ru

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