制作简单 makefile 的目录问题

发布于 2024-10-16 20:08:50 字数 658 浏览 0 评论 0原文

我想为具有以下目录的 C 项目制作一个简单的 makefile。

 -Project  
   - src 
     - a.c  
     - b.c
     - main.c  
   - headers  
     - a.h  
     - b.h   
   - build  
     - makefile  
     - project.exe 

这是我完成的 makefile。

project: a.o b.o main.o
    cc -o sesion0 a.o b.o main.o
a.o: ../src/a.c ../headers/a.h 
b.o: ../src/b.c ../headers/b.h 
main.o: ../src/main.c ../headers/a.h ../headers/b.h 

但是当我执行 ma​​ke 命令时,它告诉我文件或目录 ao、bo 和 main.o 不存在,而且没有输入文件。最后显示此错误:

make: *** [project] Error 1

有谁知道为什么会发生这种情况或我在哪里出现错误?我不太清楚如何管理 makefile 中的目录。

谢谢。

I want to make a simple makefile for a C project that have the following directories.

 -Project  
   - src 
     - a.c  
     - b.c
     - main.c  
   - headers  
     - a.h  
     - b.h   
   - build  
     - makefile  
     - project.exe 

And here it's the makefile that I've done.

project: a.o b.o main.o
    cc -o sesion0 a.o b.o main.o
a.o: ../src/a.c ../headers/a.h 
b.o: ../src/b.c ../headers/b.h 
main.o: ../src/main.c ../headers/a.h ../headers/b.h 

But when I execute the make order, it tell's me that the file or directory a.o, b.o and main.o doesn't exist and also that there's not input files. In the end shows this error:

make: *** [project] Error 1

Does anyone know why this happen or where I have the error? I don't know very well how to manage the directories in the makefile.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青瓷清茶倾城歌 2024-10-23 20:08:50

Make 有内置规则从 xc 生成 xo,但不能从 ../src/xc 生成 xo。换句话说,输入和输出的路径必须相同,只是文件扩展名不同。

您可以使用用于目录搜索的VPATH来修复它:

VPATH = ../src:../headers
a.o: a.c a.h 
b.o: b.c b.h 
main.o: main.c a.h b.h 

Make has built-in rules for making x.o from x.c, but not from ../src/x.c. In other words, paths of input and output must be the same, only the file extension differs.

You can fix it by using VPATH for directory search:

VPATH = ../src:../headers
a.o: a.c a.h 
b.o: b.c b.h 
main.o: main.c a.h b.h 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文