makefile - tipos - variables de investigacion pdf
No se puede asignar la variable dentro de la receta (2)
¿Cómo hago este trabajo? Se produce un error con "make: somevariable: Comando no encontrado"
sometarget:
somevariable = somevalue
Ejemplo completo:
CXXFLAGS = -I/usr/include/test -shared -fPIC
OBJ = main.o Server.o
blabla : $(OBJ)
ifeq ($(argsexec),true)
# Creates an executable
CXXFLAGS = -I/usr/include/test
$(CXX) -o blabla $(OBJ) $(CXXFLAGS)
else
# Creates a library
DESTDIR = /home/pc
$(CXX) -o blabla $(OBJ) $(CXXFLAGS)
./bn.sh
endif
Encontré una solución usando la función eval
:
$(eval variablename=whatever)
Esto funciona :)
(aunque ahora puedo intentar encontrar un sistema de compilación más fácil;))
Gracias a todos por leer y también por supuesto a @eriktous por escribir.
Si lo escribe como lo hizo, la asignación se ejecutará como un comando de shell, que da el error que recibió.
Intentaría organizarlo así:
CXXFLAGS = -I/usr/include/test ifneq ($(argsexec),true) CXXFLAGS += -shared -fPIC DESTDIR = /home/pc endif OBJ = main.o Server.o blabla : $(OBJ) $(CXX) -o blabla $(OBJ) $(CXXFLAGS) ifneq ($(argsexec),true) ./bn.sh endif
Esto debería hacer lo que quieras, aunque no estoy del todo contento con usar la construcción ifneq
dos veces. Tendría que pensar más para encontrar algo que evite eso.