Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
makefile-单独的文件夹_Makefile_Compiler Flags - Fatal编程技术网

makefile-单独的文件夹

makefile-单独的文件夹,makefile,compiler-flags,Makefile,Compiler Flags,我想编译我的源文件两次,每次使用不同的标志。除此之外,我需要有这些可执行文件,我将在编译后在不同的目录中获取这些文件(因此我希望“make”创建两个文件夹,并在每个文件夹中放置一个可执行文件) 我认为它们的主要问题是我不知道如何处理主对象文件。我们可以用不同的名称创建它们(因为每一组.o文件都应该与另一组具有不同标志的文件有所不同),或者将它们放在我们希望有可执行文件的目录中 我仍然不知道如何优雅地完成:/ 非常感谢您的帮助:)您没有给我们提供太多的详细信息,因此我假设您有两个源文件,foo.c

我想编译我的源文件两次,每次使用不同的标志。除此之外,我需要有这些可执行文件,我将在编译后在不同的目录中获取这些文件(因此我希望“make”创建两个文件夹,并在每个文件夹中放置一个可执行文件)

我认为它们的主要问题是我不知道如何处理主对象文件。我们可以用不同的名称创建它们(因为每一组.o文件都应该与另一组具有不同标志的文件有所不同),或者将它们放在我们希望有可执行文件的目录中

我仍然不知道如何优雅地完成:/


非常感谢您的帮助:)

您没有给我们提供太多的详细信息,因此我假设您有两个源文件,
foo.c
bar.c
,并且您正在构建两个目录,
red/
blue/
。下面是一个粗略的makefile,它将完成此任务:

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 $@
OBJS:=foo.o bar.o
红色_OBJS:=$(addprefix RED/,$(OBJS))
BLUE_OBJS:=$(addprefix BLUE/,$(OBJS))
$(红色对象):红色/%.o:%.c
$(CC)-c$<-o$@
$(蓝色对象):蓝色/%.o:%.c
$(CC)-c$<-o$@
红色/红色执行官:$(红色对象)
$(CC)$<-o$@
蓝色/蓝色执行官:$(蓝色对象)
$(CC)$<-o$@

您是否在问该怎么做(例如,为对象文件指定不同的名称或将它们放在这两个目录中),或者如何让他们这样做?(我建议将对象文件放在这两个目录中。)这个问题中的一些想法可能就是您想要的。现在的问题是如何强制Make将.o文件放入这两个目录:)