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ď č. 1Prvú č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