avatar

fengkx's Blog

fengkx

Student & Coder

Guangzhou, China
Build with Hexo and Next.js

尝试写个 Makefile

文件

按照Think-Cpp的进度写了关于时间的程序。文件夹里有三个文件。

  1. Time.h
  2. Time.cpp
  3. main.cpp

不用 Makefile

如果不用 Makefile

g++ -c Time.cpp  # 生成目标文件
g++ -c main.cpp
g++ Time.o main.o -o main #链接生成可执行文件

现在这样还不算多,但是日后文件多起来了,一个个的输就输不来了。
这就是 make 登场的时候了。
当然你还可以用g++ main.cpp Time.cpp -o main来生成可执行文件。

make

make 是一个用于控制复杂程序中那些部分需要被编译形成可执行文件的开源软件。当然它也可以用来安装软件。

Makefile

Makefile 的作用就是用来告诉 make 文件要按怎样的顺序怎样的方式来编译。

根据make 官方文档,Makefile 的语法如下

target:   dependencies ...
          commands
          ...

target 目标文件,即要生成的文件。
dependencies 依赖,即要生成目标文件用到的文件。
commands 命令,指的是要生成目标文件用到的 shell 命令。

对这个程序写 Makefile

根据不用 Makefile 时的操作,按照格式来写。

main: main.o Time.o #要生成 main 的可执行文件要依赖 main.o 和 Time.o
  g++ main.o Time.o -o main #用到的命令,缩进一定要有
Time.o:Time.cpp Time.h
	g++ -c Time.cpp
main.o:main.cpp Time.h
	g++ -c main.cpp

clean: #这样只要输入 make clean 就可以把生成的目标文件清掉
	rm main
install:
  cp main /bin #安装的过程其实就是将文件复制到 /usr/local/bin
uninstall:
	rm /bin/main #同理有卸载
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处。

本文链接: https://www.fengkx.top/post/try-make-file/

发布于: 2017-11-04