makefile - Make say 'doc' 是最新的,doc 文件夹为空(Makefile C++)
问题描述
当我想用 makefile 和 doxygen 生成我的文档时,我有这个输出:
make: 'doc' is up to date.
但是当文档文件夹为空时,我的文档无法保持最新状态!
你能说我为什么我有这个消息吗?
(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
解决方案
对于没有先决条件的目标,如果它存在于磁盘上,则认为它是最新的。你有一个规则:
doc:
....
当您运行make doc
make 尝试查看doc
目标是否是最新的。在这里,您有一个doc
没有先决条件的目标,并且它存在于磁盘上(您有一个doc
目录),因此 make 认为它是最新的。
如果你希望这个doc
目标不引用磁盘上的实际目录,你应该像这样声明它.PHONY
:
.PHONY: doc
doc:
....
现在,当您运行make doc
make 时,将始终运行与该目标关联的配方。
推荐阅读
- javascript - Javascript 从本地 words.txt 2021 创建数组
- node.js - 如何从快速“路由器”中调用的另一个函数返回“res”?
- mongodb - MongoDb ObjectId 中的 4 字节时间戳值会溢出吗?
- java - 创建一个变量而不是多个 getter 使用——这对整体性能更好?
- php - Codeigniter 会话中如何、为什么以及在哪里使用表 ci_sessions?
- php - 环境变量在作业中包含错误的值
- sparql - 在 DBpedia 上查询 pagerank 值是否不再可用?
- node.js - 即使关闭 ssh,如何保持此应用程序 nodejs 运行?
- sql - 如何在单个更新查询中更新 json 字段中的多个嵌套键?
- sorting - xsl:sort:按数值排序两位数