c++的文件也是先从.cpp -> .obj -> .exe 的。
也就是在你按下"工程"-“输出制作文件”的那一瞬间.
在C++中会有很多.cpp(即源文件相当于汇编里的.asm)文件,它们都编译为.obj文件,这一步叫做编译;
然后从.obj->.exe就叫做连接,顾名思义就是将所有的.obj都连在一起变成一个.exe
所以讲和汇编基本是一样的。
那个.mak文件是记录每一个.cpp文件的最后修改时间的。为什么要这样做呢?
比如 我们有10个.cpp文件 分别叫做
a1.cpp a2.cpp a3.cpp ..... a10.cpp
我们在7点种的时候编译了一下于是我们有了
a1.obj a2.obj a3.obj ..... a10.obj
然后呢我们连接就有了 a.exe文件了
好了,我们在10点钟的时候发现了a.exe有bug(错误),所以我们又要修改程序了。
但是我们只修改了a10.cpp这个文件就搞定了bug.
然后我再编译
从a1.cpp 到 a1.obj
a2.cpp 到 a2.obj
....
a10.cpp到 a10.obj
看上去是正确的,实际上,并不对。
其实a1.cpp 到 a1.obj,a2.cpp到a2.obj都是没有用的。
我们只要a10.cpp到a10.obj就行了,其他的.cpp文件完全没有必要再编译为.obj了,因为我们并没有修改它们。
但是我们是怎么知道没有去修改这些文件呢,在.mak中就有方法实现。
每个cpp文件的最后修改时间都记录在mak中。
在编译时就会发现我们的a10.cpp在10点的时候被改过,于是就直接编译a10.cpp文件成为a10.obj这样比第一次编译的速度会快很多。
最后再连接成为一个a.exe文件.
cpp文件生成.exe文件
发帖者
Gifts_show
0 评论:
发表评论