使用makefile的Doxygen文档

时间:2014-03-11 21:24:05

标签: c++ makefile doxygen

我用c ++编写了一个程序,我想用makefile生成可执行文件。这有效,但我的代码中也有一些Doxygen样式注释,我希望我的makefile自动生成带有文档的HTML页面。不幸的是,我无法弄清楚应该如何正确地完成这项工作。到目前为止,我的makefile的文档部分看起来像:

docs:
    doxygen ./Doxyfile

我猜我需要添加一些额外的文件,有人可以为我澄清这个程序吗?

3 个答案:

答案 0 :(得分:1)

我从make文件生成文档的方法是:

docs:
    @doxygen
    @open doxygen/html/index.html

然后,您可以通过运行make docs来访问它。

答案 1 :(得分:1)

您可能想添加依赖项,以便在源更改时生成文档。最简单的方法是在应用程序的构建规则中。当源更改并且需要构建应用程序时,您可以将其用作构建文档的触发器:

$(PROGRAM): $(OBJECTS)
    @echo Building $@
    $(CC) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBS)
    @echo Updating Docs $@
    @doxygen

我想同样可以单独使用

DOCS=MyProject_html

docs: $(DOCS)/MyProject.html

$(DOCS)/MyProject.html: $(PROGRAM) $(OBJECTS)
    @echo Building Docs
    @doxygen

clean:
     rm -rf $(PROGRAM) $(OBJECTS) $(DOCS)

有一种更自动的生成方式,但这应该可行。

答案 2 :(得分:0)

如果问题是如何确保make(而不是make docs)也可以重建您的文档:

  1. 创建一个docs目标,该目标要么是伪造的,要么所有源文件和头文件都列为依赖项。

  2. 确保默认目标(makefile中的第一个目标)同时具有docs和可执行文件作为依赖项。

例如

all: hello docs

.PHONY: docs
docs:
    @doxygen ./Doxyfile

hello: hello.o foo.o
    ...

hello.o: hello.cpp hello.h foo.h
    ...

foo.o: foo.cpp foo.h
    ...

仅在Doxygen的任何输入发生更改时才会重新运行Doxygen的替代方法(不过,还有更多工作要做):

all: hello docs

# Doxygen needs to be rerun if the Doxyfile changed, or if any source or
# header file with Doxygen comments changed.  If all your comments are in
# the headers, you don't need to include the .cpp files.
docs: hello.cpp hello.h foo.cpp foo.h ./Doxyfile
    @doxygen ./Doxyfile

hello: hello.o foo.o
    ...

hello.o: hello.cpp hello.h foo.h
    ...

foo.o: foo.cpp foo.h
    ...

(确保通过实际Makefile中的选项卡替换构建规则之前的空格)