【问题标题】:Extend the makefile to generate a library and documentation with doxygen扩展 makefile 以使用 doxygen 生成库和文档
【发布时间】:2012-12-08 12:07:42
【问题描述】:
我已经实现了一个二叉树程序,其中包括带有函数的 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 的文档。任何帮助都会有所帮助。
【问题讨论】:
标签:
c
makefile
static-libraries
doxygen
【解决方案1】:
我知道我的回答来得有点晚,但我希望有人能从中受益。
我有一个生成 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 吐出的错误将变为可点击并跳转到错误注释。
【解决方案2】:
好吧,我真的不知道 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、clean 或 all 将始终执行,即使名为 doc、clean 或 all 的文件存在。
它的语法如下:
.PHONY: all clean doc
And 通常放在 Makefile 的末尾。