Makefile - если условие - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь создать в Makefile условие, что, если это файл ft_utils.c, он компилируется с другой командой.

$(DIR_OBJ)/%.o: $(DIR_SRC)/%.c
                mkdir -p $(DIR_OBJ)
                ifeq($<, $(DIR_SRC)/ft_utils.c)
                    $(CC) $(CFLAGS) -c $< -I. -o $@
                else
                    $(CC) $(CFLAGS) -c $< -I. -I$(DIR_MLX) -L$(DIR_MLX) -L. $(LFLAGS) -o $@
                endif

Но когда он попадает в ft_utils. c он запускает команду в остальном.

Как мне создать условие if в Makefile, если if $< == $(DIR_SRC)/ft_utils.c запускает нужную мне команду?

1 Ответ

1 голос
/ 25 апреля 2020

Существует несколько способов. Самое простое - создать обычное правило для этого случая:

$(DIR_OBJ)/%.o: $(DIR_SRC)/%.c
    mkdir -p $(DIR_OBJ)
    $(CC) $(CFLAGS) -c $< -I. -I$(DIR_MLX) -L$(DIR_MLX) -L. 

$(DIR_OBJ)/fc_utils.o: $(DIR_SRC)/fc_utils.c
    mkdir -p $(DIR_OBJ)
    $(CC) $(CFLAGS) -c $< -I. -o $@

Существуют более сложные подходы, полезные, если у вас есть несколько специальных целей, но сначала попробуйте простой подход.

...