Makefile将.o文件移动到不同的目录

时间:2013-07-01 07:08:58

标签: c makefile vpath

我在一个目录中有源代码,并在另一个目录中有一个makefile。我能够使用make系统的vpath机制编译代码。 .o文件是在makefile所在的同一文件夹中创建的。但我想将这些.o文件移动到名为obj的其他目录中。我尝试了以下方法:

vpath %.o obj

但是,它们仍然在与makefile相同的文件夹中创建。任何人都可以帮我解决这个问题吗?

以下是makefile的一些突出显示的行:

PATH_TO_OBJ:- ../obj
SRC :- .c files
OBJS :- $(SRC:.c = .o)
.c.o = $(CC) $(CFLAGS) -c 
exe: cc $(LFLAGS) -o $(PATH_TO_OBJ) $(SRC).

此后,.o文件正在Makefile的同一文件夹中创建。没有转向obj

2 个答案:

答案 0 :(得分:4)

-o选项定义了由gcc编译器生成的保存输出文件的位置。

gcc main.c -c -o path/to/object/files/main.o

答案 1 :(得分:2)

Make VPATH仅用于查找源文件。目标文件的放置取决于构建它们的内容。在http://mad-scientist.net/make/vpath.html有一个很好的描述(我看到有人打我发表评论)。

* BSD构建系统使用make的变体,可以自动在/usr/obj中放置目标文件(以及其他生成的文件,包括来自lex和yacc变体的C源)。如果您可以访问该版本的make,那么这可能是处理您尝试解决的任何潜在问题的好方法。