visual tutorial studio make cmake

tutorial - Argumento opcional en la macro cmake



cmake visual studio 2017 (3)

Quiero crear una macro cuyo argumento sea opcional. Si no se especifica, el valor del argumento debe ser una cadena vacía. ¿Cómo puedo hacer esto? Gracias por tu ayuda.


CMake no (AFAIK) verifica el número de variables pasadas a una macro, por lo que puede continuar y declararlo como cualquier otra macro.

También hay una variable ${ARGN} que se expande a una lista de todas las variables "restantes" pasadas a una macro, lo que puede ser útil.

Actualización Como se indica en el comentario de Sam , CMake ahora falla a menos que se den todos los argumentos esperados (nombrados) cuando se llama a una macro o función.


Cualquier argumento nombrado en su definición de macro es obligatorio para las personas que llaman. Sin embargo, su macro aún puede aceptar argumentos opcionales siempre que no se mencionen explícitamente en la definición de la macro.

Es decir, a los llamadores se les permite pasar argumentos adicionales (que no fueron nombrados en la lista de argumentos de la macro). Su macro puede verificar la existencia de tales argumentos adicionales al verificar la variable ${ARGN} .

Cuidado: ARGN no es una variable cmake "normal". Para usarlo con el comando list() , primero deberá copiarlo en una variable normal:

macro (mymacro required_arg1 required_arg2) # Cannot use ARGN directly with list() command, # so copy it to a variable first. set (extra_macro_args ${ARGN}) # Did we get any optional args? list(LENGTH extra_macro_args num_extra_args) if (${num_extra_args} GREATER 0) list(GET extra_macro_args 0 optional_arg) message ("Got an optional arg: ${optional_arg}") endif () endmacro (mymacro)


Esto ocurre de manera predeterminada si el argumento no se especifica, ya que CMake no verifica el número de parámetros requeridos para una macro.