Makefile-If条件

Makefile-If条件,makefile,clang,Makefile,Clang,我试图在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

我试图在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
$(DIR\u OBJ)/%.o:$(DIR\u SRC)/%.c
mkdir-p$(DIR_OBJ)

ifeq($有多种方法。最简单的方法是为这种情况创建一个普通规则:

$(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 $@
$(DIR\u OBJ)/%.o:$(DIR\u SRC)/%.c
mkdir-p$(DIR_OBJ)
$(CC)$(CFLAGS)-c$<-I.-I$(DIR\u MLX)-L$(DIR\u MLX)-L。
$(DIR_OBJ)/fc_utils.o:$(DIR_SRC)/fc_utils.c
mkdir-p$(DIR_OBJ)
$(CC)$(CFLAGS)-c$<-I.-o$@

还有更复杂的方法,如果你有几个特殊的目标,它们很有用,但是首先尝试简单的方法。

请阅读以下答案:O尝试了这个。但是我遇到了另一个问题。这个obj依赖于另一个创建lib的命令。当我把这两个案例作为dependency
$(lib):$(DIR_obj)/fc_utils.O$(obj)时
它只运行第一个依赖项,并停止其余的依赖项。@WincentyBertoniLech:这是一个单独的问题(请每个问题一个问题),但是如果您发布整个
$(LIB)
规则,那么我可能可以帮您。