Ответ 1
Я нашел решение:
$(eval variablename=whatever)
Это работает:)
(хотя теперь я могу попытаться найти более легкую систему сборки;))
Спасибо всем за чтение, и, конечно же, @eriktous за письмо!
Как мне сделать эту работу? Он ошибается с помощью "make: somevariable: Command not found"
sometarget:
somevariable = somevalue
Полный пример:
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
Я нашел решение:
$(eval variablename=whatever)
Это работает:)
(хотя теперь я могу попытаться найти более легкую систему сборки;))
Спасибо всем за чтение, и, конечно же, @eriktous за письмо!
Если вы пишете его так же, как и вы, назначение будет выполняться как команда оболочки, которая дает полученную вами ошибку.
Я бы попытался организовать его примерно так:
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
Это должно делать то, что вы хотите, хотя я не очень доволен тем, что дважды использовал конструкцию ifneq
. Мне пришлось бы думать сложнее придумать что-то, что позволит избежать этого.