makefile dep,makefile中call
Makefile学习笔记-我的CPP之路-C博客
Makefile学习笔记
首先,列出一个非常简单的Makefile示例:
-
hd.cpp
#包含“hd.h”
使用命名空间std
int main() {
你好,迪迪尔!1 \ n ;
}
-
高清h
#包括iostream
-
Makefile //我们称之为Makefile1
Hd: hd.cpp //注意我没写hd.h
g -o hd hd.cpp
-
当然,让司令部编制没问题。但是,请注意,我没有像下面这样写第一行:
高清:hd.cpp高清. h
所以在Makefile1中,hd(可执行程序)不依赖于hd.h,只依赖于编译的hd.cpp因为在Makefile1的第二行调用g时,编译hd.cpp时会包含 hd.h 。
乍一看,没有问题。其实问题很大。在Makefile1中,hd并不依赖于hd.h,这意味着如果我此时修改HD.h,重新制作,make程序仍然只检测hd.cpp的版本,没有发现变化,所以不会调用第二行的G命令。测试,它是。无论hd.h怎么修改,再次调用make都没有动作。
不要认为包含头文件。cpp可以避免写依赖。Makefile中的h文件。结论,或者说启发,一个项目会有很多文件依赖,会有很多程序员参与编码。如果依赖文件被修改,我们当然希望重新编译它们。所以,不要偷懒,一定要在Makefile中写满依赖关系。
比如这个例子,正确的写法是:
-
Makefile //我们称之为Makefile2
高清:hd.cpp高清. h
g -o hd hd.cpp
-
需要明确的是,在makefile2中,第一行显示的关系是希望每次Make运行时要检测的文件版本发生变化,第二行是要执行的命令。Makefile2有完整的依赖关系。每次修改hd.h都会重新执行make。
当然,如果不使用make并直接在命令行上输入调用g,对。h当然会被重新编译。
最后,在Makefile的编译中,每一个编译后的文件都必须写出它所有的依赖项,即使cpp包含头文件。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。