Подтвердить что ты не робот

Невозможно назначить переменную внутри рецепта

Как мне сделать эту работу? Он ошибается с помощью "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
4b9b3361

Ответ 1

Я нашел решение:

$(eval variablename=whatever)

Это работает:)

(хотя теперь я могу попытаться найти более легкую систему сборки;))

Спасибо всем за чтение, и, конечно же, @eriktous за письмо!

Ответ 2

Если вы пишете его так же, как и вы, назначение будет выполняться как команда оболочки, которая дает полученную вами ошибку.

Я бы попытался организовать его примерно так:

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. Мне пришлось бы думать сложнее придумать что-то, что позволит избежать этого.