¿Alguien puede explicar cómo usar declaraciones if-then y para bucles en Makefiles? Parece que no puedo encontrar ninguna buena documentación con ejemplos.Makefile If-Then Else y Loops
Respuesta
las formas condicionales
simple
conditional-directive
text-if-true
endif
de complejidad moderada
conditional-directive
text-if-true
else
text-if-false
endif
más complejo
conditional-directive
text-if-one-is-true
else
conditional-directive
text-if-true
else
text-if-false
endif
endif
directivas condicionales
si es igual Sintaxis
ifeq (arg1, arg2)
ifeq 'arg1' 'arg2'
ifeq "arg1" "arg2"
ifeq "arg1" 'arg2'
ifeq 'arg1' "arg2"
si no igual Sintaxis
ifneq (arg1, arg2)
ifneq 'arg1' 'arg2'
ifneq "arg1" "arg2"
ifneq "arg1" 'arg2'
ifneq 'arg1' "arg2"
Si sintaxis definida
ifdef variable-name
Si no se define la sintaxis
ifndef variable-name
foreach función
foreach FUNCTION
$(foreach var, list, text)
Semántica foreach
Para cada palabra espacios en blanco se separó en "lista", la variable llamada por "var" se ponga en esa palabra y el texto se ejecuta.
¿Has probado el GNU make documentation? Tiene una sección completa sobre condicionales con ejemplos.
He aquí 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 diferentes versiones de make tienen sintaxis ligeramente diferente, ninguno de los cuales parece estar documentado muy bien.
¿'$ (OS)' es una variable de make GNU predefinida? Si es así, entonces quizás debería agregarlo [aquí] (http://stackoverflow.com/q/714100/912144). – Shahbaz
Puede ver bucles muchas veces, pero generalmente no son necesarios. Aquí hay un ejemplo de cómo se podría 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] > [email protected]
SUBDIRS = snafu fubar
$(SUBDIRS):
cd [email protected] && $(MAKE)
- 1. stdClass object y foreach loops
- 2. if, else, else if y end Lua
- 3. Nested Parallel.For() loops velocidad y rendimiento
- 4. Makefile: mostrar y ejecutar
- 5. Makefile para CUDA y C
- 6. C#: N Para Loops
- 7. Nested Parallel.ForEach Loops
- 8. Loops ineficiencia en I
- 9. Naming Loops en Python
- 10. For-Loops en Python
- 11. endforeach in loops?
- 12. ¿Por qué Python tiene "else" en "for-else" y "while-else"?
- 13. Makefile, Pattern-Rules y Directories
- 14. Referencia de LaTeX y Makefile
- 15. GNU Makefile y bash - escapar
- 16. ¿Debo nombrar "makefile" o "Makefile"?
- 17. Loops dentro de SQL dinámico
- 18. anidado WHILE loops en Python
- 19. While Loops and Multiple Conditions
- 20. Optimización de Haskell Inner Loops
- 21. ¿Cómo usar sscanf en loops?
- 22. Windows Forms - Multiple Event Loops
- 23. Ruby Loops con la abuela
- 24. Big O para while loops
- 25. for loops - ¿Tipo de objeto descartado?
- 26. Expandir/contraer loops y declaraciones if/then en VS2010?
- 27. Cómo llamar a Makefile desde otro Makefile?
- 28. Makefile ifeq logical AND
- 29. IF - ELSE IF - Estructura ELSE en Excel
- 30. makefile: separador de falta
Agrego "con ejemplos simples". La documentación está bien, pero ¡hombre son los ejemplos abstractos! Para mí, esta sigue siendo una pregunta válida. – Quickredfox