Makefile编译所有文件,即使更改是在单个c++文件中完成的
Makefile compiles all files, even though changes are done in a single c++ file
我从事的项目涉及大量的c++
文件。我问这个问题是出于好奇。
通常,在完成make
之后,要修改的特定c++
文件将单独编译,以供后续的make
s使用。有时,我在单个c++
文件中遇到的即使是小的修改也会导致几乎所有其他c++
文件和最终可执行文件的编译。
Makefile
编译其他未修改的c++
文件的原因是什么?
因此makefile
中出现了timestamping
的概念。比如说make
规则就是这样的
output: dep1
rule-1
dep1: dep2
rule-2
执行makefile
时,make
首先检查output
文件的timestamp
(如果output
文件不存在,则默认情况下执行该规则)。假设output
是在1200小时创建的,并且您在1205小时更改文件dep1并执行make
,则make
发现目标输出比其dependency dep1
旧,因此它将执行规则-1。如果假设output
在1300时创建,dep1
在1230时创建,并且现在您在1310时更新dep2
,并执行make
。您可以在这里看到,由于dep1
早于dep2
,执行了规则2,并且dep1
的时间戳已经更改,因此output
现在早于dep1
,因此执行了规则1。您可以在这里看到,尽管output
不直接依赖于dep2
,但它是在您更新dep2
时重建的
这就是你的情况。检查makefile
并尝试检查您编辑的文件的相关性。将重新生成依赖于已编辑文件的目标。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到