У меня есть make-файл с отдельными правилами, которые устанавливают переменную с тем же именем. Как мне установить эту переменную, чтобы она стала глобальной из правила, чтобы я мог использовать ее позже.
rule1: test_var=/path/to/folder/
rule2: test_var=/path/to/another/folder/
$(info test_var is $(test_var))
Когда я вызываю "make rule2", он говорит "test var is"
Но я хочу "test var is / path / to / another / folder"
Спасибо!
EDIT
Возможно, я слишком сильно упростил свой подход, я думал, что у меня есть идея глобальной переменной, но make, возможно, не следует использовать таким образом. Вот проблема ниже.
Когда я запускаю этот код, я получаю сообщение об ошибке *** Нет правила для создания цели '/file_i_want_compiled.c', необходимой для 'out / IceCream'. Стоп
LINK:= -lpthread
C_SRCS =
C_SRCS += folder1/file1.c
C_FLAGS:= -stf=gnu11
OBJ_PATH= out/objects/
rule1: path = /path/to/rule1folder
.PHONY : rule1
rule2: path = /path/to/rule2folder
.PHONY : rule2
C_SRCS_NO_DIR := $(notdir $(C_SRCS))
C_OBJS := $(C_SRCS_NO_DIR:%.c=$(OBJ_PATH)%.o
C_OBJS += $(path)/file_i_want_compiled.o
out/IceCream: GEN_ICECREAM $(C_OBJS) $(OBJ_PATH)IceCream.o
$(CC) $(C_FLAGS) $(C_OBJS) %(OBJ_PATH)IceCream.o -o $@ $(LINK)
/ путь / к / rule1folder
&
/ Путь / к / rule2folder
оба имеют свой уникальный файл file_i_want_compiled.c
Я вызываю make с make rule1 , например