【问题标题】:Problems with directories making a simple makefile制作简单makefile的目录问题
【发布时间】:2011-06-23 11:57:15
【问题描述】:

我想为具有以下目录的 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 命令时,它告诉我文件或目录 a.o、b.o 和 main.o 不存在,也没有输入文件。最后显示这个错误:

make: *** [project] Error 1

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

谢谢。

【问题讨论】:

    标签: makefile


    【解决方案1】:

    Make 具有从 x.c 生成 x.o 的内置规则,但不是从 ../src/x.c 生成 x.o。也就是说,输入和输出的路径必须相同,只是文件扩展名不同。

    你可以使用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 
    

    【讨论】:

    • 感谢马克西姆的回答,但知道它向我显示了另一个错误。这是错误:cc -c -o a.o ../src/a.c ../src/a.c:1:21: error: a.h: Don't exist the file o directory make: *** [a.o] Error 1 你知道为什么会这样吗?好像没有在../headers目录下找a.h文件。
    • 现在您需要添加编译器包含路径。在 Makefile 中的某处添加 CPPFLAGS=-I../headers
    • @MaximEgorushkin 以下问题在处理多个目标及其依赖项时是否存在相同的问题? stackoverflow.com/questions/30043480/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2021-05-08
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    相关资源
    最近更新 更多