当我想用makefile和doxygen生成文档时,我得到以下输出:
make: 'doc' is up to date.
但是当doc文件夹为空时,我的文档无法更新!
您能说我为什么收到此消息吗?
(makefile所在的项目是C ++项目)
在下面,您可以找到makefile和Doxyfile。
CC = clang++
CFLAGS = -Wall -std=c++14
HDIR = include
CLASS = obj/Handyman.o obj/Saw.o obj/ScrewDriver.o obj/Hammer.o
INTERFACE = obj/ToolScrewing.o obj/ToolBreak.o obj/ToolCutting.o
ABSTRACT = obj/Tool.o
FACTORY = obj/ToolFactory.o
compile: bin/main
./bin/main
bin/main: obj/main.o ${CLASS} ${ABSTRACT} ${INTERFACE} ${FACTORY}
${CC} ${CFLAGS} -o $@ $^
obj/%.o: src/%.cpp
${CC} ${CFLAGS} -c -o $@ $< -I ${HDIR}
doc:
doxygen Doxyfile
clean:
rm obj/*.o
rm bin/*
cleanDoc:
rm doc/* -rf
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "My ToolBox"
OUTPUT_DIRECTORY = ./doc
INPUT = ./src ./include
OUTPUT_LANGUAGE = French
MARKDOWN_SUPPORT = YES
FILE_PATTERNS = *.cpp \
*.hpp
GENERATE_HTML = YES
EXTRACT_ALL = YES
答案 0 :(得分:1)
对于没有先决条件的目标,如果它存在于磁盘上,则认为它是最新的。您有一条规则:
doc:
....
运行make doc
时,请尝试查看doc
目标是否最新。在这里,您有一个没有先决条件的目标doc
,它已经存在于磁盘上(您有一个doc
目录),因此请考虑使用最新的目标。
如果您希望此doc
目标不引用磁盘上的实际目录,则应declare it .PHONY
像这样:
.PHONY: doc
doc:
....
现在,当您运行make doc
时,make将始终运行与该目标关联的配方。
答案 1 :(得分:0)
@MadScientist的答案很好。如果要进一步改进并使其递增,可以指定文档构建的依赖性,如下所示:
doc/index.html: Doxyfile src/*.cpp include/*.hpp
doxygen Doxyfile
.PHONY: doc
doc: doc/index.html ;
在这种情况下,如果您的任何源文件或头文件发生了更改,或者Doxyfile
发生了更改,那么make
会认为文档过时并进行重建。如果doc / index.html不存在,它也会构建它,例如如果“ doc”文件夹为空。
另一方面,如果您刚刚生成了“ doc / index.html”文件,并且您的源代码文件中没有任何更改,则无需执行任何操作。