/ / REGEX_Замінити в CMAKE (не зрозуміти команду належним чином) - замінити, makefile, cmake

REGEX_Replace в CMAKE (не зрозуміти правильну команду) - замінити, makefile, cmake

Мені шкода, якщо це здається нуб-питанням, але у мене проблеми з правильним розумінням цієї команди, і Google мені не допоміг.

Скажімо, у мене є цей скрипт CMake:

набір (OUTDIR $ {CMAKE_CURRENT_BINARY_DIR} / MyFolder) рядок (REGEX ЗАМІНИТИ "/" "" OUTDIR $ {OUTDIR})

Подібний приклад я знайшов у книзі.Я спробував прочитати пояснення там разом із документацією, але мені все ще не зовсім зрозуміло, що робить цей фрагмент. Як я зрозумів з документації: REGER REPLACE замінить "/" на "" кожного разу, коли знайде його та поверне результат у вихідний файл. Тож у цьому випадку вихід буде який? Папка "OUTDIR", яка є шляхом, визначеним вище із набором? Я не розумію, чому це "OUTDIR $ {OUTDIR}", а не просто "$ {OUTDIR}". Допоможіть мені усунути цю плутанину, пояснивши цей фрагмент. Дякую

Відповіді:

0 для відповіді № 1

Ви майже правильно зрозуміли першу частину. Річ у тому, що перші два рядкові літерали після ЗАМІНА REGEX - це два RegExes (регулярні вирази).Отже, ця функція знайде всі збіги першого RegEx у останньому вказаному вами рядку та замінить їх значенням, що надходить з другого RegEx. Результат буде збережено у цій рядковій змінній перед останньою.

Зараз у регулярних виразах деякі символи мають особливе значення, вони називаються спеціальні символи. Зворотний слеш - одна з них. Якщо ви хочете, щоб цей персонаж поводився як звичайний персонаж, ви повинні Втеча це, ставлячи перед ним зворотну скісну риску.

Тепер у літералі рядка CMake ви також повинні уникнути символу зворотної риски, поставивши перед ним ще одну зворотну риску.

Це, як сказано, для того, щоб ваш код замінив OUTDIR все / з ви хотіли б написати так:

set (OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/MyFolder)
string (REGEX REPLACE "/" "\\" OUTDIR ${OUTDIR})

Це пов'язане питання: CMake: як замінити літерал зворотної косої риски в Regexp?

Ви можете дізнатись більше про RegEx тут: https://www.regular-expressions.info