我正在尝试在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时,它将在else中运行该命令。
我如何在Makefile中创建if条件,如果$< == $(DIR_SRC)/ft_utils.c
它运行我想要的命令?
有多种方法。最简单的方法是为这种情况创建一条普通规则:
$(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 $@
还有更复杂的方法,如果您有多个特殊目标,则很有用,但是首先尝试简单的方法。