2012-03-25 10 views
0

私は大きなプロジェクトのためにプログラミングしているので、他の人と協力しています。メイクファイルに.hドキュメントを含める方法

project: 
--include (header files from others supplied for me) 
--lib (libraries from others supplied for me) 
--L3_CVS (this folder include all my files) 
    -- Makefile 
    -- sourceFile (all my source files here) 
     -- include_private(all header files used only by myself) 
     -- appl (all my C files here) 

私のMakefileは以下の通りです::

#################################################### 
CROSS_COMPILE=/home/powerpc-wrs-linux-gnu/x86-linux2/powerpc-wrs-linux-gnu-ppc_e500v2-glibc_cgl- 

EXTRA_CFLAGS += -g 

EXTRA_LDFLAGS += 

LIBSB =-Wl,--start-group -ldiag -ldiag_esw -lacl -ldiagcint -lcint -lsal_appl -lsal_appl_editline -lsal_appl_plat\ 

-lbcm -lbcm_esw -lbcm_common -lfirebolt -ltitan -ltrident -lhumv -lbradley -lherc -ldraco -lscorpion\ 

-ltriumph -ltrx -ltriumph2 -lenduro -lkatana -lflexctr -lptp -lsoc_esw -lsoc -lsoc_phy -lsoc_mcm\ 

-lsoccommon -lsoc_shared -lshared -lsal_core -lsal_core_plat -lcustomer -lsoc_nemo -lsoc_clsbuilder\ 

-lsoc_sal \ 

-lbcm_compat -lbcm_rpc -lcpudb -ltrx -lstktask -llubde -ldrivers -ldiscover -lcputrans \ 

-lrcu -lpthread -lrt -lm -Wl,--end-group 

LIBS = -ldiag -lrcu 

CC = $(CROSS_COMPILE)gcc 

LD = $(CROSS_COMPILE)ld 

AR = $(CROSS_COMPILE)ar 

STRIP = $(CROSS_COMPILE)strip 


SRC_PATH := ./SourceFile/appl 

HEAD_PATH := ./SourceFile/include-private 


INC_DIR = ../include 

LIB_PATH = ../lib 


APP_NAME = L3appl 

SRCS := $(wildcard $(SRC_PATH)/*.c) 

export $(SRCS) 

OBJS:= $(patsubst %.c,%.o,$(SRCS)) 

%.d: %.c 

    @set -e; rm -f [email protected]; \ 

    $(CC) -MM $< > [email protected]$$$$; \ 

    sed 's,\($*\)\.o[ :]*,\1.o [email protected] : ,g' < [email protected]$$$$ > [email protected]; \ 

    rm -f [email protected]$$$$ 

sinclude $(SRCS:.c=.d) 

INCLUDES = $(wildcard $(HEAD_PATH)/*.h) 

$(APP_NAME):$(OBJS) 

    $(CC) -c -I$(INC_DIR) $(SRCS) 

    $(CC) -o $(APP_NAME) $(OBJS) -L$(LIB_PATH) $(LIBSB) -lpthread -lrt -lm 


.PHONY:clean 

clean: 

    rm -f $(OBJS) $(APP_NAME) 
################################################# 

私の問題は、私はターミナルでmakeを実行するとき、それは常に表示されていることである: は、ディレクトリ管理が容易にするために、私のディレクトリは、以下のようなものです** *そのようなファイルやディレクトリはありません コンパイルが終了しました。 ./SourceFile/include-privateの.hファイルは含まれていないようです。

しかし、実際には、これらの.hファイルをインクルード= $(ワイルドカード$(HEAD_PATH)/ *。h) "を使用しています。

どこが間違っているのですか?

これは私の初めてのmakefileです。だから私のメイクファイルに間違いがある場合は、あなたがそれらを指摘していただければ幸いです!

ご協力いただきありがとうございます!!!!!!!

答えて

0

あなたは$(CC)-c -I $(INC_DIR)-I $(INCLUDES)に$(CC) -c -I$(INC_DIR) $(SRCS) to $(CC) -c -I$(INC_DIR) -include $(INCLUDES) $(SRCS)

または$(CC)-c -I $(INC_DIR)$(SRCS)を変更しようとすることができます$(SRCS) INCLUDESは./SourceFile/include-privateです(ディレクトリのみ、.hファイルなし)

編集:通常、明示的に.hファイルを含める必要はありませんが、これは最初のものです変更してください。 2番目の変更は明示的に.hファイルを追加するのではなく、必要な.hファイルを検索できる別のインクルードディレクトリをコンパイラに提供します。

詳細については、GCC manファイルを参照してください。

よろしく

+0

ありがとうございます!しかし、あなたの方法は動作しません! – city

+0

を試してみてください:$(CC)-include $(INCLUDES)-c -I $(INC_DIR)$(SRCS)、私はparam orderを乱したと思います – grifos

+0

いいえ、どちらも動作しません。 – city

1

あなたは、あなたのMakefileをデバッグするremakeを使用することができます

CFLAGS = -Wall $(OPTIMFLAGS) $(INCLUDEFLAGS) 
INCLUDEFLAGS = -I $(INC_DIR) -I $(HEAD_PATH) 
OPTIMFLAGS = -g -O 

のようなものを持っている必要があります。

+0

ご協力いただきありがとうございます。しかし、あなたの方法は機能しません。 – city

+0

その後、 'remake -x'を使ってあなたのMakefileをデバッグしてください。 –

関連する問題