http://blog.csdn.net/liang13664759/article/details/1771246
设置环境变量:
export LD_LIBRARY_PATH=/home/yxhuang3/key_input/out/xrelease
mekfile相关
一般规则:
target ... : prerequisites ...
command...
目标文件...:依赖文件...
命令...
make将第一个目标文件(target),作为最终的目标文件。
执行动作
动作名,其冒号后什么也没有。make不会自动执行该动作
.PHONY :clean :
rm edit main.o kbd.o command.o display.o /
insert.o search.o files.o utils.o
一般放在makefile文件最后。make clean
我们可以在一个makefile中定义与编译无关的命令,比如程序的打包,程序的备份,等等。
“.PHONY”表示伪目标文件。
注释:
只有行注释,用“#”字符
include:
使用include关键字可以把别的Makefile包含进来
include filename
filename可以保含路径和通配符
make命令开始时,会把找寻include所指出的其它Makefile,并把其内容安置在当前的位置。
clean :
rm edit main.o kbd.o command.o display.o /
insert.o search.o files.o utils.o
变量:
变量一般都是字符串
objects = main.o kbd.o command.o display.o /
insert.o search.o files.o utils.o
以“$(objects)”的方式来使用这个变量。/表示连接符
“:=”操作符 变量赋值
“+=”操作符 给变量追加值
如果变量之前没有定义过,那么,“+=”会自动变成“=”,如果前面有变量定义,那么“+=”会继承于前次操作的赋值符。如果前一次的是“:=”,那么“+=”会以“:=”作为其赋值符。
执行步骤:
1、读入所有的Makefile。
2、读入被include的其它Makefile。
3、初始化文件中的变量。
4、推导隐晦规则,并分析所有规则。
5、为所有的目标文件创建依赖关系链。
6、根据依赖关系,决定哪些目标要重新生成。
7、执行生成命令。
通配符:
“~/test”,这就表示当前用户的$HOME目录下的test目录
“*.c”表示所以后缀为c的文件
文件搜寻:
VPATH = src:../headers
make会在当前的目录中和特殊变量“VPATH”所指定的目录中找寻依赖文件和目标文件。目录由“冒号”分隔
通常,make会把其要执行的命令行在命令执行前输出到屏幕上。当我们用“@”字符在命令行前,那么,这个命令将不被make显示出来。
@echo 正在编译XXX模块......
略命令的出错,我们可以在Makefile的命令行前加一个减号“-”
定义命令包:
如果Makefile中出现一些相同命令序列,那么我们可以为这些相同的命令序列定义一个变量。定义这种命令序列的语法以“define”开始,以“endef”结束,如:
define run-yacc
yacc $(firstword $^)
mv y.tab.c $@
endef
这里,“run-yacc”是这个命令包的名字,其不要和Makefile中的变量重名。在“define”和“endef”之间的就是命令序列。
CURDIR是makefile的内嵌变量,显示当前路径
MAKECMDGOALS 环境变量 表示make命令行中所有终极目标
make指定了“-e”参数,则系统环境变量将覆盖Makefile中定义的变量
echo -n 不换行输出
文字色:
echo -e "\e[1;31mThis is red text\e[0m"
This is red text
\e[1;31m
将颜色设置为红色\e[0m
将颜色重新置回
颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37
背景色:
echo -e "\e[1;42mGreed Background\e[0m"
Greed Background
颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47
$(MAKE) 一般表示make
make -C directory all -C表示先进入目录directory,再执行all
待续