0

subfolder1/Submain.c があります

{
  //initialize statements
    CallFunction1();
}

subfolder2/Submain.c

{
  //initialize statements
    CallFunction2();
}

等々。

MainFoldermake、すべてのサブフォルダーを含めるためのファイルがありmainfile.hます。私は実際には、関数定義をファイルに入れるのは良い考えではないことを知っています。したがって、すべての関数宣言 (インターフェイスなど) を含む新しいファイルを作成し、この .h をサブフォルダーに含めたいと考えています。しかし、これを行う方法がわかりません。誰か助けてください。したがって、主なことは、新しい .h と .C をリンクする方法がわからないことですCallFunction1CallFunction2.h.h

(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: ルールを変更する権限はありません。しかし、メインの Makefile とサブフォルダーの Makefile で遊ぶことができます。

4

1 に答える 1

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 $@
于 2012-08-23T20:13:40.673 に答える