扩展makefile以使用doxygen生成库和文档

时间:2012-12-08 12:07:42

标签: c makefile static-libraries doxygen

我实现了一个二叉树程序,它包含带有函数的tree.c,带有声明的tree.h和用于测试的main.c。 另外,我有一个makefile:

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

%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)

tree: $(OBJ)
    $(CC) -o $@ $^ $(CFLAGS)

clean:
    rm -f *.o tree

现在我想让它生成一个库,不仅是二进制树函数的对象文件,之后在makefile中生成doxygen的文档。任何帮助都会有所帮助。

2 个答案:

答案 0 :(得分:8)

我知道我的答案有点迟了,但我希望有人能从中受益。

我有一个生成Doxygen doc的makefile。 你必须稍微扭转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吐出的错误就会变得可以点击,并且会跳转到错误的评论。

答案 1 :(得分:1)

好吧,我真的不知道doxygen命令的语法,所以我会做一个通用的答案:

你的Makefile中的

,每个

term: [dep]
    action

是目标。

因此,如果您添加以下内容:

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

您将能够使用以下方式生成文档:

make doc

doc在这里是目标的名称)

现在,如果你添加:

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

您将拥有程序,只需调用

即可生成文档
make

最后,还有一个Makefile可以使用的额外语句:.PHONY。它是“将许多目标中的一个标记为不直接生成文件的方法,即使存在与目标同名的文件,也要确保它们的执行”。换句话说,即使名为doc,{{1}的文件,也要确保cleanalldoc始终执行}或clean存在。

其语法如下:

all

通常放在Makefile的末尾。