开发手册 欢迎您!
软件开发者资料库

Makefile - 重新编译

Makefile重新编译 - 从简单和简单的步骤学习Makefile,从基本到高级概念,包括为什么包括Makefile,宏,依赖关系,后缀规则,指令,重新编译,其他功能,示例,SOAP XML-RPC Web服务AJAX JavaScript J2EE ASP.NET VB.NET C#C ++ C Pro * C Makefile PERL Parrot Ruby JAVA J2EE CORBA BILLING CRM OM DLL PHP CGI MySQL PL / SQL SDLC CSS ASP DHTML Flash。

make 程序是一个智能实用程序,它基于您在源文件中所做的更改而工作.如果你有四个文件main.cpp,hello.cpp,factorial.cpp和functions.h,那么所有剩下的文件都依赖于functions.h,而main.cpp依赖于hello.cpp和factorial.cpp.因此,如果您在functions.h中进行任何更改,则 make 将重新编译所有源文件以生成新的目标文件.但是,如果在main.cpp中进行任何更改,因为这不依赖于任何其他文件,则只重新编译main.cpp文件,而不是help.cpp和factorial.cpp.

编译文件时, make 检查其目标文件并比较时间戳.如果源文件具有比目标文件更新的时间戳,则它会生成新的目标文件,假设源文件已更改.

避免重新编译

可能有一个由数千个文件组成的项目.有时您可能更改了源文件,但您可能不想重新编译依赖它的所有文件.例如,假设您向头文件添加宏或声明,其他文件依赖于该头文件.保守, make 假设头文件中的任何更改都需要重新编译所有相关文件,但是您知道它们不需要重新编译,您宁愿不浪费时间等待它们进行编译./p>

如果在更改头文件之前预测到问题,可以使用`-t'标志.此标志告诉 make 不要运行规则中的命令,而是通过更改其上次修改日期来标记目标.您需要遵循以下过程 :

  • 使用命令`make'重新编译真正需要重新编译的源文件.

  • 在标题文件中进行更改.

  • 使用命令`make  - t'将所有目标文件标记为最新.下次运行make时,头文件中的更改不会导致任何重新编译.

如果您已经更改了头文件在某些文件确实需要重新编译的时候,要做到这一点为时已晚.相反,您可以使用`-o file'标志,该标志将指定文件标记为"旧".这意味着,文件本身不会被重新制作,其他任何内容都不会在其帐户上重新制作.你需要按照这个程序 :

  • 重新编译需要编译的源文件,原因与特定头文件无关,用`make -o header file'.如果涉及多个头文件,请为每个头文件使用单独的`-o'选项.

  • 使用`make -t'更新所有目标文件.