2012-08-23 68 views
0

我有一個subfolder1/Submain.c如何包括其他的.c內.c文件優雅

{ 
    //initialize statements 
    CallFunction1(); 
} 

subfolder2/Submain.c

{ 
    //initialize statements 
    CallFunction2(); 
} 

等。

MainFolder有一個make文件,以包括所有的subfolders.Like subfolder1 subfolder2等mainfolder也有這個mainfile.h其具有所有的功能定義(像CallFunction1CallFunction2)。我知道通過實踐它不是一個好主意,有函數定義I N .h文件。所以,我想創建一個新的文件.h所有的函數聲明(如接口),幷包括該.H子文件夾中。但我不知道該怎麼做。有人可以請幫助。所以,更主要的是我不知道如何聯繫起來的新的.h和.C

這裏是(BIGDIR /測試/ 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)。

當前的Makefile中Mainfolder的內容是:

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

PS:我沒有獲得改變規則。但是我可以在子文件夾中使用Main Makefile和Makefile。

+0

如果您向我們展示你的(最小的)的makefile這將是一個容易得多。否則,在我們告訴你如何改變它之前,我們必須猜測它做了什麼。 – Beta

+2

絕不會。如果你將一個C文件包含在另一個C文件中,那就很不起眼。 – 2012-08-23 22:26:31

+0

你運行'Subfolder1 /''make'和它建立可執行'test1',是這樣嗎?如果我們對'Makefile.defs'中的內容進行了一些有根據的猜測,這樣可以嗎? – Beta

回答

0

每個文件(編譯單元)被單獨編譯(成.o文件)和以後它們連接在一起。頭文件(new.h)沒有鏈接,它們用於原型檢查。

的Makefile:

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

all: 
    gcc $(objects) -o final_binary 

%.o: %.c 
    gcc -c $< -o [email protected]