如何解决如何使用不在makefile当前目录中的源文件?
我是C语言的新手,很抱歉,如果我的问题很简单,以下是我的makefile:
src = $(wildcard *.c)
obj = $(src:.c=.o)
LDFLAGS = -pthread
prog: $(obj)
$(CC) -o $@ $^ $(LDFLAGS)
.PHONY: clean
clean:
rm -f $(obj) prog
但是我在其他目录中有源文件(让我们myfunc.c
)。我不想将myfunc.c
复制到每个项目然后进行编译和链接,我只想使用该目录中的单个源,如何修改我的makefile来反映这一点?
解决方法
您必须告诉Make两项新事情:需要myfunc.o
,以及在哪里可以找到myfunc.c
。 (我假设some/dir/myfunc.c
。)
有多种方法可以做到这一点。初学者应该学习简单的方法:
obj = $(src:.c=.o) myfunc.o
myfunc.o: some/dir/myfunc.c
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
了解后,可以改用vpath:
obj = $(src:.c=.o) myfunc.o
vpath %.c some/dir
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。