gpt4 book ai didi

c - Makefile,添加位于父目录的头文件(不允许在里面移动!)

转载 作者:太空狗 更新时间:2023-10-29 11:40:37 33 4
gpt4 key购买 nike

dir1
--- myheader1.h
--- myheader2.h
src
--- prog.c
--- makefile

prog.c

#include <stdio.h>
#include "myheader1.h"
#include "myheader2.h"

int main()
{
func1();
func2();
return 0;
}

myheader1.h

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

myheader2.h

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

寻找有关如何从父目录添加 header 的解决方案,我找到了 this问题。但它对我不起作用,我仍然遇到找不到头文件的错误。

No rule to make target 'myheader1.h', needed by 'prog.o'. Stop.

生成文件

CFLAGS = -c -Wall -I.. myheader1.h

prog : prog.o
cc -o prog prog.o

prog.o : prog.c myheader1.h
cc $(CFLAGS) prog.c

我做错了什么?以及如何在不使行变得非常长或丑陋的情况下添加第二个标题?

最佳答案

prog.o : prog.c myheader1.h

这一行表示 prog.o 依赖于两个文件,prog.cmyheader1.hprog.c 存在,但myheader1.h 不存在(至少不在同一目录中)。

应该是

CFLAGS = -Wall -I..

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

注意:

  • ../myheader1.h 在先决条件列表中,而不是 myheader1.h
  • 根本不应该在编译器命令行上列出 header
  • -c 并不真正属于 CFLAGS

关于c - Makefile,添加位于父目录的头文件(不允许在里面移动!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52651873/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com