Makefile 文件重新编译
make 程序是一个智能的实用程序和工作根据在源文件中的变化。如果有四个文件main.cpp,hello.cpp,factorial.cpp和functions.h。这里所有reamining文件是依赖functions.h,main.cpp的是依赖于hello.cpp,factorical.cpp。因此,如果做任何改变functions.h然后将重新编译所有源文件来生成新的对象文件。但是,如果做任何改变main.cpp,因为这是不依赖任何其他的过滤,那么在这种情况下,只有main.cpp文件将被重新编译和hellp.cpp factorial.cpp将无法重新编译。
虽然编译一个文件时,MAKE检查目标文件和比较时间表带,如果源文件有更新的时间戳比目标文件,然后将生成新的对象文件,假设源文件已被改变。
避免重新编译
有可能是项目包括成千上万的文件。有时候可能已经改变了一个源文件,但不想重新编译所有依赖于它的文件。例如,假设添加宏到一个头文件或声明,许多其他文件依赖。假设在头文件中的任何变化需要重新编译所有相关文件,但要知道,他们并不需要重新编译,你宁可不要浪费时间等待他们的编译。
如果预期改变头文件的问题之前,可以使用`-t'标志位。这个标志告诉make命令不运行的规则,而是来标记目标,迄今为止,通过改变它的最后修改日期。遵循以下步骤:
-
使用命令'make'来重新编译真的需要重新编译源文件。
-
在头文件中进行更改。
-
使用命令`-t'来纪念所有的目标文件为最新。下一次运行make,在头文件中的变化不会引起任何重新编译。
如果已经改变了头文件的时候,有一些文件就需要重新编译,做到这一点已经太晚了。相反,可以使用`-o文件“的标志,这标志着一个指定的文件作为”old“。这意味着该文件本身不会被重制并没有别的其交代将被重制。遵循以下步骤:
-
重新编译源文件,需要编制独立的特定头文件的原因,`make -o headerfile'。如果涉及几个头文件,使用一个单独的`-o'选项,每个头文件。
-
轻触所有目标文件使用`make -t'.