Linux下make命令的使用方法详解

基本用法
1、构建默认目标:
当Makefile文件中没有指定具体目标时,make命令会从第一个规则开始构建。
```bash
make
```
2、构建指定目标:
在make命令后面指定要构建的目标名称。
```bash
make target_name
```
3、构建指定Makefile文件:
使用-f选项,指定要使用的Makefile文件。
```bash
make -f Makefile.new
```
4、指定运行目录:
使用-C选项,指定make命令的运行目录。
```bash
make -C /path/to/project
```
5、并发构建:
使用-j选项,并指定要同时运行的任务数,通常将其设置为CPU核心数的两倍。
```bash
make -j 4
```
6、继续构建:
使用-k选项,即使某个任务失败,也会继续构建过程。
```bash
make -k
```
7、模拟运行:

使用-n选项,仅模拟运行构建过程,不实际执行任何命令。
```bash
make -n
```
8、静默模式:
使用-s选项,只显示关键信息,减少构建过程中的输出。
```bash
make -s
```
实例解析
1、简单例子:
假设有一个项目包含以下文件:test.c,anotherTest.c,test.h,以及一个名为Makefile的文件。Makefile内容如下:
```makefile
all: test
test: test.o anotherTest.o
gcc -Wall test.o anotherTest.o -o test
test.o: test.c
gcc -c -Wall test.c
anotherTest.o: anotherTest.c
gcc -c -Wall anotherTest.c
clean:
rm -rf *.o test
```
编译整个工程:
```bash
$ make
```
输出:
```bash
gcc -c -Wall test.c
gcc -c -Wall anotherTest.c
gcc -Wall test.o anotherTest.o -o test

```
再次查看目录内容,里面多了一些.o文件和可执行文件test:
```bash
$ ls
anotherTest.c anotherTest.o Makefile test test.c test.h test.o
```
2、强制重建所有目标:
使用-B选项可以强制编译所有的目标文件以及最终的执行文件。
```bash
make -B
```
3、打印调试信息:
使用-d选项可以打印出详细的调试信息。
```bash
make -d | more
```
相关问题与解答
1、问题1:如何清理项目中生成的所有目标文件和可执行文件?
解答:可以使用Makefile中定义的clean目标来清理所有生成的文件。
```bash
make clean
```
2、问题2:如果某个源文件被修改了,再次执行make命令会发生什么?
解答:make命令只会重新编译与被修改的源文件相关的目标文件,如果test.c文件被修改了,再次执行make命令只会重新编译test.o,而不会重新编译anotherTest.o。
```bash
$ make
gcc -c -Wall test.c
gcc -Wall test.o anotherTest.o -o test
```