我用c ++编写了一个程序,我想用makefile生成可执行文件。这有效,但我的代码中也有一些Doxygen样式注释,我希望我的makefile自动生成带有文档的HTML页面。不幸的是,我无法弄清楚应该如何正确地完成这项工作。到目前为止,我的makefile的文档部分看起来像:
docs:
doxygen ./Doxyfile
我猜我需要添加一些额外的文件,有人可以为我澄清这个程序吗?
答案 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
)也可以重建您的文档:
创建一个docs
目标,该目标要么是伪造的,要么所有源文件和头文件都列为依赖项。
确保默认目标(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中的选项卡替换构建规则之前的空格)