Cmake string para obtener pares de clave valor de una lista de cadenas que contiene claves y valores separados por dos puntos.
Tengo una lista de cadenas (input):
set(MY_LIST "A:1;B:2;C:3")
Quiero obtener los valores clave utilizando un bucle foreach y configurarlos como constantes CMake. Algo así como:
foreach(ITEM ${MY_LIST})
SET(<ITEM_A> <value_ofA>)
endforeach()
Básicamente, quiero obtener el siguiente resultado pero usando un bucle for:
SET(A "1")
SET(B "2")
SET(C "3")
¿Cómo puedo lograr esto usando foreach para navegar por cada cadena en mi lista y establecer las parejas clave-valor como constantes CMake?
davy.ai
Para lograr el resultado deseado usando
foreach
, primero puede dividir la lista de cadenasMY_LIST
en pares de claves-valor individuales usando el comandostring(REGEX MATCHALL)
y expresiones regulares. Luego, recorra cada par usandoforeach
y divida el par en clave y valor usando el comandostring(REPLACE)
. Finalmente, establezca el par de clave-valor como una constante de CMake utilizando el comandoSET
.Aquí está el código para implementar el enfoque anterior:
Esto producirá la siguiente salida:
Aquí, la expresión regular
\\w+:[^;]*
coincide con uno o más caracteres de palabra (letras, dígitos o guion bajo) seguido de dos puntos y cero o más caracteres diferentes al punto y coma. Esto coincide con cada par de claves-valor en la lista de cadenasMY_LIST
.El comando
string(REPLACE)
reemplaza el delimitador:
con;
, para que la clave y el valor puedan separarse usando el comandolist(GET)
. Luego, el comandoSET
establece el par de claves-valor como una constante de CMake.Finalmente, imprimimos las constantes usando el comando
message
.