Spec-Zone.ru › CMake 3.14

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

Сопоставляет регулярное выражение столько раз, сколько возможно, и подставляет выражение замены для совпадения в выходные данные. Выражение замены может ссылаться на суbexpressions, ограниченные скобками, совпадения, используя \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])

Создать универсальный уникальный идентификатор (UUID) в соответствии с RFC4122, основанный на хэше объединённых значений <namespace> (который сам по себе должен быть допустимым UUID) и <name>. Алгоритм хеширования может быть либо MD5 (UUID версии 3), либо SHA1 (UUID версии 5). UUID имеет формат xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, где каждый x представляет строчный шестнадцатеричный символ. При необходимости заглавный регистр можно запросить с помощью необязательного флага UPPER.

© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.14/command/string.html

Spec-Zone.ru

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