我实现了一个二叉树程序,它包含带有函数的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的文档。任何帮助都会有所帮助。
答案 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}的文件,也要确保clean
,all
或doc
将始终执行}或clean
存在。
其语法如下:
all
通常放在Makefile的末尾。