我想每次用不同的标志编译我的源文件两次。除此之外,我需要在不同目录中编译后获得这些可执行文件(所以我希望“make”创建两个文件夹并在每个文件夹中放入一个可执行文件)。
我认为他们的主要问题是我不知道如何管理目标文件。认为我们可以用不同的名称创建它们(因为每组 .o 文件应该以某种方式与具有不同标志的另一组不同)或者将它们放在我们想要拥有可执行文件的目录中。
我仍然不知道如何以优雅的方式做到这一点:/
非常感谢任何帮助:)
我想每次用不同的标志编译我的源文件两次。除此之外,我需要在不同目录中编译后获得这些可执行文件(所以我希望“make”创建两个文件夹并在每个文件夹中放入一个可执行文件)。
我认为他们的主要问题是我不知道如何管理目标文件。认为我们可以用不同的名称创建它们(因为每组 .o 文件应该以某种方式与具有不同标志的另一组不同)或者将它们放在我们想要拥有可执行文件的目录中。
我仍然不知道如何以优雅的方式做到这一点:/
非常感谢任何帮助:)
你没有给我们很多细节,所以我假设你有两个源文件foo.c
和bar.c
,并且你在两个目录中构建,red/
并且blue/
. 这是一个可以完成这项工作的原始生成文件:
OBJS := foo.o bar.o
RED_OBJS := $(addprefix red/,$(OBJS))
BLUE_OBJS := $(addprefix blue/,$(OBJS))
$(RED_OBJS): red/%.o : %.c
$(CC) -c $< -o $@
$(BLUE_OBJS): blue/%.o : %.c
$(CC) -c $< -o $@
red/red_exec: $(RED_OBJS)
$(CC) $< -o $@
blue/blue_exec: $(BLUE_OBJS)
$(CC) $< -o $@