我有一个子文件夹1 / Submain.c
{
//initialize statements
CallFunction1();
}
subfolder2 / Submain.c
{
//initialize statements
CallFunction2();
}
等等。
在MainFolder
中有一个make
文件,包含所有子文件夹。像子文件夹1子文件夹2等。主文件夹也有mainfile.h
,其中包含所有函数定义(如{{ 1}}和CallFunction1
)。我通过实践知道,在CallFunction2
文件中使用函数定义并不是一个好主意。所以我想创建一个包含所有函数声明(如接口)的新.h
文件,并在子文件夹中包含此.h。但我不知道该怎么做。有人可以请帮助。所以主要的是我不知道如何链接新的.h和.C
这是(BIGDIR / tests / Mainfolder / Subfolder1)中的make文件
.h
这是SubMain.c
include $(BIGDIR)/tests/make/Makefile.defs
TEST_NAME := test1
LCINCS += -I$(BIGDIR)/../tests/Mainfolder
C_FILES := SubMain.c
include $(BIGDIR)/tests/make/Makefile.rules
我想以这样的方式修改它
在#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
)。
Mainfolder中Makefile的当前内容为:
NewMain.c
PS:我无权更改规则。但我可以在子文件夹中使用Main Makefile和Makefile。
答案 0 :(得分: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 $@