/ / REGEX_Replace v CMAKE (príkazu nerozumiete správne) - nahradiť, urobiť súbor, cmake

REGEX_Replace v CMAKE (správne nerozumie príkazu) - nahradiť, makefile, cmake

Je mi ľúto, ak sa to javí ako otázka noob, ale mám problémy s porozumením tohto príkazu správne a Google mi nepomohol.

Povedzme, že mám tento skript CMake:

sada (OUTDIR $ {CMAKE_CURRENT_BINARY_DIR} / MyFolder) reťazec (REGEX REPLACE "/" "" OUTDIR $ {OUTDIR})

Podobný príklad som našiel v knihe.Skúšal som tam prečítať vysvetlenie spolu s dokumentáciou, ale stále mi nie je úplne jasné, čo tento úryvok robí. Ako z dokumentácie rozumiem: REGER REPLACE nahradí znak „/“ znakom „“ zakaždým, keď ho nájde, a vráti výsledok na výstupe. Takže v tomto prípade by bol výstup aký? Priečinok „OUTDIR“, ktorý je cestou definovanou vyššie so súborom? Nerozumiem, prečo je to „OUTDIR $ {OUTDIR}“ a nie iba „$ {OUTDIR}“. Pomôžte mi vyčistiť tento zmätok vysvetlením tohto úryvku. Ďakujem

odpovede:

0 pre odpoveď č. 1

Prvú časť ste pochopili takmer správne. Ide o to, že prvé dva reťazcové literály po REGEX VÝMENA sú dva RegExes (regulárne výrazy).Táto funkcia teda nájde všetky zhody prvého RegEx v poslednom zadanom reťazci a nahradí ich hodnotou pochádzajúcou z druhého RegEx. Výsledok sa uloží do tejto premennej reťazca pred posledným.

Teraz majú v regulárnych výrazoch niektoré znaky špeciálny význam, sú pomenované špeciálne znaky. Spätné lomítko je jedným z nich. Ak chcete, aby sa s touto postavou zaobchádzalo ako s normálnou postavou, musíte uniknúť a dať pred neho spätnú lomku.

Teraz v reťazcovom literále CMake musíte tiež uniknúť znaku spätného lomítka a dať pred neho ďalšie spätné lomítko.

To je povedané, aby sa váš kód mohol nahradiť v MIMO všetko / s chceli by ste napísať takto:

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

Toto je súvisiaca otázka: CMake: Ako získať literál spätného lomítka v Regexp?

Viac informácií o RegEx sa dozviete tu: https://www.regular-expressions.info