Comment faire pour que ça marche? Il génère une erreur avec "make: somevariable: Command not found"
sometarget:
somevariable = somevalue
Exemple complet:
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
J'ai trouvé une solution en utilisant la fonction eval
:
$(eval variablename=whatever)
Cela marche :)
(même si je peux maintenant essayer de trouver un système de construction plus facile;))
Merci à tous pour la lecture et bien sûr @eriktous pour l'écriture!
Si vous l'écrivez comme vous l'avez fait, l'affectation sera exécutée comme une commande Shell, ce qui donne l'erreur que vous avez obtenue.
J'essaierais de l'organiser quelque chose comme ceci:
CXXFLAGS = -I/usr/include/test Ifneq ($ (argsexec), true) CXXFLAGS + = -shared -fPIC DESTDIR =/home /pc[.____. diplomatiqueendif[.____. diplomatique.____. E5EOBJ = main.o Server.o blabla: $ (OBJ) $ (CXX ) -o blabla $ (OBJ) $ (CXXFLAGS) ifneq ($ (argsexec), true) ./bn.sh[.____.
Cela devrait faire ce que vous voulez, bien que je ne sois pas très content d'utiliser deux fois la construction ifneq
. Il faudrait que je réfléchisse davantage pour trouver quelque chose qui évite cela.