2012-12-08 86 views
1

我已經實現了一個二叉樹程序,其中包括tree.c與函數,tree.h與他們的聲明和main.c進行測試。 另外,我有一個makefile是:擴展生成文件生成一個庫和文檔與doxygen

CC=gcc 
CFLAGS=-g -Wall 
DEPS = tree.h 
OBJ = main.o tree.o 

%.o: %.c $(DEPS) 
    $(CC) -c -o [email protected] $< $(CFLAGS) 

tree: $(OBJ) 
    $(CC) -o [email protected] $^ $(CFLAGS) 

clean: 
    rm -f *.o tree 

現在我想讓它產生庫不僅是一個目標網絡文件的二進制樹的功能和事後產生的doxygen的Makefile裏的文檔。任何幫助都會有所幫助。

回答

1

好了,我真的不知道該doxygen的命令的語法,所以我會做一個通用的答案:

在Makefile

,每個

term: [dep] 
    action 

是一個目標。

所以,如果你加入類似:

doc: $(OBJ) 
    doxygen with-correct-options 

您將能夠使用生成的文檔:

make doc 

doc來到這裏的目標的名稱)

現在,如果添加:

all: tree doc 
    @echo "Generating program and doc." 

你會與簡單地調用

make 

最終生成的程序的文件,有一個額外的statment Makefile中可能有使用的:.PHONY。它是「將多個目標中的一個標記爲不直接生成文件並確保其執行即使與目標名稱相同的文件存在的方法」。換句話說,即使存在名爲doc,cleanall的文件,也要確保doc,cleanall將會執行總是

它的語法如下:

.PHONY: all clean doc 

,通常是在Makefile年底建成。

8

我知道我的答案有點遲,但我希望有人會從中受益。

我有一個生成Doxygen文檔的生成文件。 你必須扭轉Doxygen的一點點 創建滿足您需要的Doxygen的安裝文件,然後打開,在編輯和刪除線方含以下兩個設置(他們會被後來的make文件添加)

INPUT 
FILE_PATTERNS 

加入這一行

@INCLUDE = doxyfile.inc 

保存該文件以不同的名字我用Doxyfile.mk

在你的Makefile你需要的資源列表和它們所在目錄例如

SRCS = $(OBJS:.o=.c) 
SRCDIRS = ./src 
SRCDIRS += ./other_src 

現在你可以把這個規則在Makefile中,它會創建一個包含你從Doxyfile.mk刪除設置的文件doxyfile.inc。

.PHONY: all clean distclean doxy 

# If makefile changes, maybe the list of sources has changed, so update doxygens list 
doxyfile.inc: Makefile.mk 
     echo INPUT   = $(SRCDIRS) > doxyfile.inc 
     echo FILE_PATTERNS = *.h $(SRCS) >> doxyfile.inc 

doxy: doxyfile.inc $(SRCS) 
     doxygen.exe doxyfile.mk 

獎勵:如果從像Eclipse的IDE內運行的Doxygen吐出來的是錯誤變成可點擊,將跳轉到壞的評論。