我在一个目录中有源代码,并在另一个目录中有一个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
答案 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
,那么这可能是处理您尝试解决的任何潜在问题的好方法。