代码之家  ›  专栏  ›  技术社区  ›  Tony Tannous

Makefile,添加位于父目录中的头文件(不允许在内部移动!)

  •  2
  • Tony Tannous  · 技术社区  · 6 年前
    dir1
    --- myheader1.h
    --- myheader2.h
        src
        --- prog.c
        --- makefile
    

    程序c

    #include <stdio.h>
    #include "myheader1.h"
    #include "myheader2.h"
    
    int main()
    {
        func1();
        func2();
        return 0;
    }
    

    void func1()
    {
        printf("Header1\n");
    }
    

    我的头2.h

    void func2()
    {
        printf("Header2\n");
    }
    

    寻找如何从父目录添加头的解决方案 this

    没有规则使目标“myheader1.h”为“prog.o”所需。停下。

    生成文件

    CFLAGS = -c -Wall -I.. myheader1.h
    
    prog : prog.o
         cc -o prog prog.o
    
    prog.o : prog.c myheader1.h
         cc $(CFLAGS) prog.c
    

    我在做什么?如何添加第二个标题而不使行变得非常长或丑陋?

    1 回复  |  直到 6 年前
        1
  •  4
  •   melpomene    6 年前
    prog.o : prog.c myheader1.h
    

    这句话说 prog.o 取决于两个文件, prog.c myheader1.h 程序c 我的头1.h 不存在(至少不在同一目录中)。

    应该是的

    CFLAGS = -Wall -I..
    
    prog.o : prog.c ../myheader1.h
            cc $(CFLAGS) -c prog.c
    

    • ../myheader1.h 在先决条件列表中,而不是 我的头1.h
    • 编译器命令行上根本不应列出头
    • -c 不属于 CFLAGS