string
Операции со строками.
Поиск и замена
НАЙТИ
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).
Спецификация регулярных выражений
Следующие символы имеют специальное значение в регулярных выражениях:
^ Matches at beginning of input
$ Matches at end of input
. Matches any single character
[ ] Matches any character(s) inside the brackets
[^ ] Matches any character(s) not inside the brackets
- Inside brackets, specifies an inclusive range between
characters on either side e.g. [a-f] is [abcdef]
To match a literal - using brackets, make it the first
or the last character e.g. [+*/-] matches basic
mathematical operators.
* Matches preceding pattern zero or more times
+ Matches preceding pattern one or more times
? Matches preceding pattern zero or once only
| Matches a pattern on either side of the |
() Saves a matched subexpression, which can be referenced
in the REGEX REPLACE operation. Additionally it is saved
by all regular expression-related commands, including
e.g. if( MATCHES ), in the variables CMAKE_MATCH_(0..9).
*, + и ? имеют более высокий приоритет, чем конкатенация. | имеет более низкий приоритет, чем конкатенация. Это означает, что регулярное выражение ^ab+d$ соответствует abbd, но не ababd, и регулярное выражение ^(ab|cd)$ соответствует ab, но не abd.
Обработка
ДОБАВИТЬ
string(APPEND <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>)
Сохранить в переменной вывода подстроку заданной строки с удаленными начальными и конечными пробелами.
УДАЛИТЬ_ПРОБЕЛЫ_ГЕНЕРАТОР
string(GENEX_STRIP <input string> <output variable>)
Удалить любые generator expressions из input string и сохранить результат в output variable.
Сравнение
string(COMPARE EQUAL <string1> <string2> <output variable>) string(COMPARE NOTEQUAL <string1> <string2> <output variable>) string(COMPARE LESS <string1> <string2> <output variable>) string(COMPARE GREATER <string1> <string2> <output variable>)
Сравнить строки и сохранить true или false в переменной вывода.
Хэширование
string(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512>
<output variable> <input>)
Вычислить криптографический хэш входной строки.
Генерация
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> может содержать следующие спецификаторы формата:
%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).
%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)
%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>)
Записать строку, которая может использоваться в качестве идентификатора на С.
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.6/command/string.html