Чтобы уладить дело, вам нужно избежать периода с двумя обратными слешами, а не с одной.
Ссылаясь на документацию CMake по командам файла:
file (переменная GLOB [RELATIVE path] [globbing выражений] ...)
Создать список файлов, соответствующих <globbing-expressions>
, и сохранить его в <variable>
.Глобальные выражения похожи на регулярные выражения, но гораздо проще.
Так что, возможно, это не регулярное выражение, а вопрос глобализации.
Документация по строковым операциям notes:
Обратите внимание, что в коде CMake требуются две обратные косые черты (\ 1) для получения обратной косой черты при разборе аргументов.
Итак, экранирование .
с \\
соответствует документации.
Тем не менее, цитирование из вики сообщества Использование регулярных выражений CMake: Escapeing
Иногда вам необходимо экранировать$
- В регулярном выражении, за пределами
[]
вам нужно \\$
- В регулярном выражении, внутри
[]
вам ничего не нужно.[$]
в порядке. - В строке без регулярных выражений перед фигурной скобкой вам нужно
\${
set(blah "whatever but \${do_not_evaluate}")
- В строке регулярного выражения перед фигурной скобкой вам нужно
\\\${
string(REGEX REPLACE
".*whatever but \\\${do not evaluate}"
Таким образом, как R .. сказал, что в CMake это хорошая привычка для регулярных выражений и глобальных выражений, использующих []
для экранирования специальных символов.