· 首先,先下载以下附件中的源码。
· 然后把源码中src文件夹中的所有文件复制到一个新的文件夹中:
· 接下来,根据下图书写一个Makefile,手动编译是从左到右,而Makefile就从右到左进行书写:
· 首先,目标只有一个,就是编译出最终可执行文件,因此先写上最终目标:
· 然后,一个一个地解决它所需要的依赖,首先是第一个,block.o:
查看block.o的源码,它还需要引入一些别的库。
因此block.o应该这么书写:
· 接下来是command.o,介绍一个命令,可以快速知道该文件编译需要的所有依赖:
g++ -MM <fileName>
此处查看command.cpp可以得到:
直接复制到Makefile里去即可:
· 剩下的都一样操作了,得到的Makefile如下:
· 最后,一个Makefile最后都会有一个叫做clean的指令,用于清除生成的内容:
· 最终得到的完整Makefile如下:
· 然后,我们使用make命令来跑一下
是可以运行成功的。
· 其实在书写Makefile的时候,那么多依赖其实是可以不写的,但是写上的好处是,当再次执行make的时候,未改动的依赖就不会重复编译,节省时间。
· 可以看到编译过程中,clean没有被执行,那是因为clean和总目标sudoku没有关系,因此不会被执行,如果要执行,需要手动指定目标,如:
make clean
· 在Makefile中,默认的总目标就是开头的第一个目标,看下面的例子:
直接执行make得到的结果为:
如果我要执行target2,就需要手动指定:
· 如果要更改默认的总目标,需要在Makefile里面使用变量来指定,变量使用方法如下。
.DEFAULT_GOAL = <target>
· 以下例子展示把上面的target2设置为总目标:
直接执行make的时候就会执行第二个目标了: