phony - makefile windows
Makefile If-Then Else y Loops (4)
¿Puede alguien explicar cómo usar declaraciones if-then y para bucles en Makefiles? Parece que no puedo encontrar ninguna buena documentación con ejemplos.
Ustedes ven bucles muchas veces, pero generalmente no son necesarios. Aquí hay un ejemplo de cómo se puede realizar un bucle for sin recurrir al shell
LIST_OF_THINGS_TO_DO = do_this do_that
$(LIST_OF_THINGS_TO_DO):
run $@ > [email protected]
SUBDIRS = snafu fubar
$(SUBDIRS):
cd $@ && $(MAKE)
¿Has probado la documentación de GNU make ? Tiene una sección completa sobre condicionales con ejemplos.
Aquí hay un ejemplo si:
ifeq ($(strip $(OS)),Linux)
PYTHON = /usr/bin/python
FIND = /usr/bin/find
endif
Tenga en cuenta que esto viene con una advertencia de que las diferentes versiones de Make tienen una sintaxis ligeramente diferente, ninguna de las cuales parece estar documentada muy bien.
Formularios condicionales
Sencillo
conditional-directive
text-if-true
endif
Moderadamente complejo
conditional-directive
text-if-true
else
text-if-false
endif
Mas complejo
conditional-directive
text-if-one-is-true
else
conditional-directive
text-if-true
else
text-if-false
endif
endif
Directivas condicionales
Si la sintaxis es igual
ifeq (arg1, arg2)
ifeq ''arg1'' ''arg2''
ifeq "arg1" "arg2"
ifeq "arg1" ''arg2''
ifeq ''arg1'' "arg2"
Si no es igual sintaxis
ifneq (arg1, arg2)
ifneq ''arg1'' ''arg2''
ifneq "arg1" "arg2"
ifneq "arg1" ''arg2''
ifneq ''arg1'' "arg2"
Si la sintaxis definida
ifdef variable-name
Si no se define la sintaxis
ifndef variable-name
Función foreach
foreach Función Sintaxis
$(foreach var, list, text)
Semántica de foreach
Para cada palabra separada en blanco en "lista", la variable nombrada por "var" se establece en esa palabra y se ejecuta el texto.