当前位置: 技术问答>linux和unix
请教点简单的Makefile文件语法,高手请进
来源: 互联网 发布时间:2016-02-15
本文导语: 有一个Make文件,部分内容如下: init: FORCE @$(MAKE) all symlinks: .qmake.cache .qmake.cache: @test ! /bin/true FORCE: 请教:1、第一行的FORCE做什么用?--空目标依赖?还是? 2、第二行的 @$是什么意思?--加不加@有什么...
有一个Make文件,部分内容如下:
init: FORCE
@$(MAKE) all
symlinks: .qmake.cache
.qmake.cache:
@test ! /bin/true
FORCE:
请教:1、第一行的FORCE做什么用?--空目标依赖?还是?
2、第二行的 @$是什么意思?--加不加@有什么区别
3、@test ! /bin/true这一条命令是什么意思?
4、最后一行FORCE:是空目标?
init: FORCE
@$(MAKE) all
symlinks: .qmake.cache
.qmake.cache:
@test ! /bin/true
FORCE:
请教:1、第一行的FORCE做什么用?--空目标依赖?还是?
2、第二行的 @$是什么意思?--加不加@有什么区别
3、@test ! /bin/true这一条命令是什么意思?
4、最后一行FORCE:是空目标?
|
1、4的答案:
如果一个规则没有依赖、也没有命令,而且这个规则的目标也不是一个存在的文件,则make认为只要该规则运行,该目标就已被更新。这意味着,所有以这种规则的目标为依赖的目标,它们的命令将总被执行。对于你的情况:
init: FORCE
@$(MAKE) all
FORCE:
这里的目标‘FORCR’满足上面的特殊条件,所以以其为依赖的目标‘init’将总强制它的命令执行。关于‘FORCR’的名字没有特别的要求,但‘FORCR’是习惯使用的名字。
2. 正常情况下make在执行命令之前首先打印命令行,这样可将您编写的命令原样输出──故称此为回显。以‘@’起始的行不能回显,就是不打印这个命令。
3. test ! /bin/true:
shell命令test,上面这句的作用是什么我也不知道。
只是执行“test ! /bin/true”后,这个命令会出错,make流程就会中断──不知是否这就是Makefile本身的意图。
如果一个规则没有依赖、也没有命令,而且这个规则的目标也不是一个存在的文件,则make认为只要该规则运行,该目标就已被更新。这意味着,所有以这种规则的目标为依赖的目标,它们的命令将总被执行。对于你的情况:
init: FORCE
@$(MAKE) all
FORCE:
这里的目标‘FORCR’满足上面的特殊条件,所以以其为依赖的目标‘init’将总强制它的命令执行。关于‘FORCR’的名字没有特别的要求,但‘FORCR’是习惯使用的名字。
2. 正常情况下make在执行命令之前首先打印命令行,这样可将您编写的命令原样输出──故称此为回显。以‘@’起始的行不能回显,就是不打印这个命令。
3. test ! /bin/true:
shell命令test,上面这句的作用是什么我也不知道。
只是执行“test ! /bin/true”后,这个命令会出错,make流程就会中断──不知是否这就是Makefile本身的意图。