Makefile-如果条件

问题描述 投票:0回答:1

我正在尝试在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它运行我想要的命令?

makefile clang
1个回答
0
投票

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

$(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 $@

还有更复杂的方法,如果您有多个特殊目标,则很有用,但是首先尝试简单的方法。

© www.soinside.com 2019 - 2024. All rights reserved.