Makefile的使用
Makefile的原理
在我的理解中,
Makefile
就是让用户在不需要IDE
的情况下, 轻松构建代码结构, 但是现在的IDE
做了太多了工作, 以至于我们都不了解一个程序是如何被编译, 被链接, 以及被执行的, 对于我们来说, 了解IDE
是怎样工作的是很有必要的
VS? NO !!!
VS
到底是怎么样实现编译,链接,以及执行我们的代码的吗?
详细过程请看 编译器的工作过程
1 | cl /EHsc /Femy.exe test.cpp |
1 |
|
gcc 立志成为编译器的标准,它开源就是合适的. vim/emacs 立志成为程序员编辑器的标准,它开源也是合适的, apache 立志成为 web 服务器的标准平台,它开源也是合适的. android 立志成为移动互联网系统的标准平台,它开源就是合适的.
Makefile基础用法
1 | target... : requisites... |
这里command 前面的
tab
是必须的 对于Makefile来说, 行首有tab
的是命令
Makefile的高明之处
Makefile
的第一大优点:
更改了一个文件之后它不会重新编译整个项目.
而是只是编译更改过的文件(IDE不就是这样吗?)
出现乱码可以用
chcp 65001
切换为utf-8
编码
第二大优点: 那些阅读源码的人, 可以清晰的从
Makefile
中观察到程序的构建方式, 某个文件到底是怎样产生的, 如果你只是从IDE
中看到那么多的.h
,.cpp
文件, 就算是大罗神仙也要读许久的.
Makefile中如果 内容很长 可以使用
\
进行换行 那些规则只告诉make
两件事, 文件的依赖关系以及如何生成目标文件
- 一般来说, make会以UNIX的标准shell, 也就是
/bin/sh
来执行命令
第三大优点 通用的源码包安装, 大大促进了开源软件的传播, 我们周围, 几乎所有的软件身上都会有开源软件的影子, 而开源软件的爆发与
makefile
的流行是分不开的, 它极大的简化了程序员的工作
有关C++库的使用
请下载例子程序
$^:代表所有的依赖文件
$@:代表目标
$<:代表第一个依赖文件
稍微复杂一点的程序示例
最后, 我再来介绍一下Linux
中的三行情诗
1 | ./configure |
1 | wget http://ftp.gnu.org/gnu/tar/tar-latest.tar.xz # 下载tar的源码包 |
一些简单的指导文档
大家如果对LFS
感兴趣, 也有一定的Linux
操作基础, 可以下载文档来试一下
LFS下载地址
Author: corvofeng
Link: https://corvo.myseu.cn/2016/04/19/2016-03-19-Makefile/
License: 知识共享署名-非商业性使用 4.0 国际许可协议