0

我有一个 subfolder1/Submain.c

{
  //initialize statements
    CallFunction1();
}

子文件夹2/Submain.c

{
  //initialize statements
    CallFunction2();
}

等等。

在其中MainFolder有一个make包含所有子文件夹的文件。像 subfolder1 子文件夹 2 等。主文件夹也有这个mainfile.h,它具有所有功能定义(如CallFunction1CallFunction2)。我通过实践知道在.h文件中包含函数定义不是一个好主意。所以我想创建一个.h包含所有函数声明(如接口)的新文件,并将这个 .h 包含在子文件夹中。但我不知道该怎么做。有人可以帮忙吗。所以主要是我不知道如何链接新的 .h 和 .C

这是(BIGDIR/tests/Mainfolder/Subfolder1)中的make文件


include $(BIGDIR)/tests/make/Makefile.defs

TEST_NAME := test1

LCINCS += -I$(BIGDIR)/../tests/Mainfolder

C_FILES := SubMain.c

include $(BIGDIR)/tests/make/Makefile.rules

这是 SubMain.c

#include "Main.h"
{

    // do things
    CallFunction1();  //this function is defined in Main.h which is in Mainfolder

}

我想以这样的方式修改它,subfolder1/submain.c 我可以拥有

#include "NewMain.h"

这样NewMain.h具有所有函数声明和

main.c仍然有所有的函数定义(太老了Main.h==> NewMain.c)。

Mainfolder 中 Makefile 的当前内容是:

include $(BIGDIR)/tests/make/Makefile.defs
SUBDIRS += subfolder1
SUBDIRS += subfolder2
include $(BIGDIR)/tests/make/Makefile.rules

PS:我无权更改规则。但我可以在子文件夹中使用 Main Makefile 和 Makefile。

4

1 回答 1

0

每个文件(编译单元)都被单独编译(到 .o 文件中),然后它们被链接在一起。头文件 (new.h) 没有链接,它们用于原型检查。

生成文件:

sources=subfolder1/main.c subfolder2/main.c
objects=$(sources:.c=.o)

all:
   gcc $(objects) -o final_binary

%.o: %.c
   gcc -c $< -o $@
于 2012-08-23T20:13:40.673 回答