3

我在一个目录中有源代码,在另一个目录中有一个生成文件。我能够使用 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

4

2 回答 2

5

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

gcc main.c -c -o path/to/object/files/main.o
于 2013-07-01T07:15:48.127 回答
3

MakeVPATH仅用于查找源文件。目标文件的位置取决于构建它们的东西。在http://mad-scientist.net/make/vpath.html上有一个很好的描述(我看到有人打我在评论中发布这个)。

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

于 2013-07-01T07:17:08.310 回答