make
名称:管理一组程序的项目管理工具。
总揽:make [-f makefile] [options] ... [targets]...
描述:
make的目标是决定一个大的项目中哪个部分需要自动的被重新编译,并且使用定义的
命令对他们进行重编译。实际上make不仅仅可以用来管理程序项目,你也可以使用make来管理
任何你想要做的事。
为了使用make程序比必须书写一个称为makefile的文件,该文件描述了目标,目标的
依赖文件及自动更新目标的命令。在一个程序中,通常最后生成的可执行文件都是更新自目标
文件,而目标文件又是由源文件生成的。
一旦存在一个合适的makefile文件,每次你改变项目中的某些源文件时,只需要简单
的执行make命令就可以自动更新需要更新的文件了。
make是根据makefile的数据和项目文件中最后的修改时间来判断项目中哪个文件需要
被更新。只有那些最后修改时间新于makefile的项目文件才需要自动被更新。
make执行makefile中指定的命令来更新一个或多个目标。(这里的目标通常为一个程序).
若你在执行make是没有指定选项-f的话,则make会按GNUmakefile,makefile,Makefile的顺序在
当前目录中搜索makefile文件,若这些文件都不存在则出错不执行。当然你可以通过在命令行中
用-f选项来指定makefile。
通常你会把你的makefile命名为makefile或Makefile(推荐使用Makefile,因为它会在使用
ls等列出目录内容的命令时出现的位置比较靠前).不推荐使用GNUmakefile,因为除了GNU版本的make
外其他版本的make不能自动识别该文件。
选项:
-b,-m: 这些选项只是为了兼容其他版本的make,GNU版本的make忽略他们。
-B,--always-make:无条件更新所有makefile中的目标。
-C dir,--directory=dir:进入指定的目录dir后执行make命令。若指定多个该选项的话
则后面的-C选项指定的目录是相对于前面的目录的.如-C / -C etc 等价 -C /etc
-d:额外打印调试信息。
-e,--environment-overrides:使用环境变量覆盖makefile中指定的变量。默认情况下,若
makefile中设置的变量与环境变量同名的话使用的是makefile中设置的变量的。
+-f file,--file=file,--makefile=file:使用指定的file作为makefile
-i,--ignore-errors:在执行makefile中指定的命令时忽略错误。
-I dir,--include-dir=dir:在指定的目录dir中搜索makefile。若指定多个该选项的话则按
指定的顺序一次搜索目录。不像make的其他选项,该选项允许这样指定 -Idir.
-j [jobs],--jobs[=jobs]:指定一次运行的命令个数。该选项可以有效的提高make执行的效率
如:make -j 2 表示一次执行两个命令
-k,--keep-going:若发生错误也继续执行下去。
-n,--just-print,--dry-run,--recon:不实际执行makefile中的命令二只是打印他们,该选项
可用于检查是否正确书写了makefile中的命令
-o file,--old-file=file,--assume-old=file:不重建指定的文件
-S,--no-keep-going:取消-k选项的作用。
实例:
编写一个简单的项目包含文件:hello.h hello.c main.c makefile
hello.h的内容:
int printhello();
hello.c的内容:
#include<stdio.h>
int printhello(){
printf("Hello World\n");
return 0;
}
main.c的内容:
#include "hello.h"
int main(void){
printhello();
return 0;
}
makefile的内容:
PRE=hello.h hello.c main.c
hello:$(PRE)
gcc -o hello $(PRE)
.PHONY:tarsrc
tarsrc:
tar zcvf hello.tar.gz $(PRE)
执行编译: make
打包源码: make tarsrc
make的命令是个非常好的项目管理软件,要进一步学习的话可以看看下面这个网页
http://www.linuxsir.org/main/doc/gnumake/GNUmake_v3.80-zh_CN_html/index.html
名称:管理一组程序的项目管理工具。
总揽:make [-f makefile] [options] ... [targets]...
描述:
make的目标是决定一个大的项目中哪个部分需要自动的被重新编译,并且使用定义的
命令对他们进行重编译。实际上make不仅仅可以用来管理程序项目,你也可以使用make来管理
任何你想要做的事。
为了使用make程序比必须书写一个称为makefile的文件,该文件描述了目标,目标的
依赖文件及自动更新目标的命令。在一个程序中,通常最后生成的可执行文件都是更新自目标
文件,而目标文件又是由源文件生成的。
一旦存在一个合适的makefile文件,每次你改变项目中的某些源文件时,只需要简单
的执行make命令就可以自动更新需要更新的文件了。
make是根据makefile的数据和项目文件中最后的修改时间来判断项目中哪个文件需要
被更新。只有那些最后修改时间新于makefile的项目文件才需要自动被更新。
make执行makefile中指定的命令来更新一个或多个目标。(这里的目标通常为一个程序).
若你在执行make是没有指定选项-f的话,则make会按GNUmakefile,makefile,Makefile的顺序在
当前目录中搜索makefile文件,若这些文件都不存在则出错不执行。当然你可以通过在命令行中
用-f选项来指定makefile。
通常你会把你的makefile命名为makefile或Makefile(推荐使用Makefile,因为它会在使用
ls等列出目录内容的命令时出现的位置比较靠前).不推荐使用GNUmakefile,因为除了GNU版本的make
外其他版本的make不能自动识别该文件。
选项:
-b,-m: 这些选项只是为了兼容其他版本的make,GNU版本的make忽略他们。
-B,--always-make:无条件更新所有makefile中的目标。
-C dir,--directory=dir:进入指定的目录dir后执行make命令。若指定多个该选项的话
则后面的-C选项指定的目录是相对于前面的目录的.如-C / -C etc 等价 -C /etc
-d:额外打印调试信息。
-e,--environment-overrides:使用环境变量覆盖makefile中指定的变量。默认情况下,若
makefile中设置的变量与环境变量同名的话使用的是makefile中设置的变量的。
+-f file,--file=file,--makefile=file:使用指定的file作为makefile
-i,--ignore-errors:在执行makefile中指定的命令时忽略错误。
-I dir,--include-dir=dir:在指定的目录dir中搜索makefile。若指定多个该选项的话则按
指定的顺序一次搜索目录。不像make的其他选项,该选项允许这样指定 -Idir.
-j [jobs],--jobs[=jobs]:指定一次运行的命令个数。该选项可以有效的提高make执行的效率
如:make -j 2 表示一次执行两个命令
-k,--keep-going:若发生错误也继续执行下去。
-n,--just-print,--dry-run,--recon:不实际执行makefile中的命令二只是打印他们,该选项
可用于检查是否正确书写了makefile中的命令
-o file,--old-file=file,--assume-old=file:不重建指定的文件
-S,--no-keep-going:取消-k选项的作用。
实例:
编写一个简单的项目包含文件:hello.h hello.c main.c makefile
hello.h的内容:
int printhello();
hello.c的内容:
#include<stdio.h>
int printhello(){
printf("Hello World\n");
return 0;
}
main.c的内容:
#include "hello.h"
int main(void){
printhello();
return 0;
}
makefile的内容:
PRE=hello.h hello.c main.c
hello:$(PRE)
gcc -o hello $(PRE)
.PHONY:tarsrc
tarsrc:
tar zcvf hello.tar.gz $(PRE)
执行编译: make
打包源码: make tarsrc
make的命令是个非常好的项目管理软件,要进一步学习的话可以看看下面这个网页
http://www.linuxsir.org/main/doc/gnumake/GNUmake_v3.80-zh_CN_html/index.html
转载于:https://blog.51cto.com/huangyandong/749807