makefile之强制目标】的更多相关文章

强制目标 1. 定义 如果一个规则(rule_A)既没有依赖也没有命令,仅有目标(Targe_A),并且目标名不冲突.那么,在执行这个规则的时候,目标总被认为是更新过的.如果这个目标(Target_A)作为另一个规则(rule_B)的依赖时,因为依赖总被认为更新过,那么依赖所在的规则中的命令总会被执行,即规则(rule_B)中的命令总会被执行. 2. 示例 2.1 强制执行示例 target: FORCE gcc force.c -o target clean: rm target .PHONY…
我们来思考一下makefile中的目标究竟是什么?实际上,在默认情况下:    1.make将makefile的目标认为是一个文件:    2.make解释器比较目标文件和依赖文件的新旧关系,决定是否执行命令:    3.make以文件作为第一优先级. 如果不进行特殊的makefile控制,make解释器在解析makefile文件时,在解析到一个规则时,会将这个规则中的目标认为是一个文件,并进一步判断目标文件和依赖文件的新旧关系.     编写以下的makefile文件,并执行make clea…
Makefile中的目标 一般目标 目标就是我们需要的最终文件,也是make的最终输出 Makefile的运行机制是:先将目标当成文件,查看文件是否存在,如果存在且是最新,那么直接结束,如果文件不存在,那么根据依赖和命令生成目标. 伪目标 伪目标也是目标 伪目标是一种特殊的目标,有其特殊性 伪目标的特殊性:伪目标不会当成文件来判断,只是一个标签 伪目标同样可以有依赖,这样make伪目标时就是先make依赖,然后运行规则 作用:伪目标每次都会更新 格式:.PHONY : xxx 例子: .PHON…
有main.c: #include <stdio.h> #include "command.h" int main(int argc, const char *argv[]) { printf("run in main\n"); ; } commad.h: #ifndef __COMMAND_H__ #define __COMMAND_H__ #define PI 3.14159 #endif 之前写的makefile都是使用下面这种形式的静态规则: O…
1. 我们知道Makefile中的语法是这样: target ... : prerequisites ... command - - 2. 假如编译两个文件可以这么写: a.o:a.c  gcc -c a.c b.o:b.c  gcc -c b.c Test: a.o b.o   gcc -o Test a.o b.oclean:  rm *.o 我们可以单独这么运行:make a.o或者make b.o或者make clean注意上面三个的区别.前两个都会生成目标,而第三个不会生成目标,仅仅希…
1.Makefile伪目标的格式: .PHONY : cleanclean: rm xxxx 2.Makefile伪目标的作用: 第一种情况: 如果我们需要书写这样的一个规则:规则所定义的命令不是去创建目标文件,而是通过make命令行明确指定它来执行一些特点的命令,就像例题中的clean.当文件夹中没有clean这个文件的时候,我们输入“make clean”能按照初衷执行,但是一旦文件夹中出现clean文件,我们再次输入“make clean”,由于这个规则没有任何依赖文件,所以目标被认为是最…
伪目标 1. 伪目标的语法: 在书写伪目标时,首先需要声明伪目标,然后再定义伪目标规则. 1.1 声明伪目标: .PHONY clean (这里声明clean是伪目标) 1.2 定义伪目标规则: clean: (这里定义伪目标clean的规则,即伪目标的执行动作) rm *.c 2. 伪目标的作用: 2.1 避免目标名与文件名冲突 也即,如果指定了伪目标,那么伪目标一定会被执行. 2.2 提高执行效率 当一个目标被声明为 伪目标后,makefile在执行规则时不会去试图查找隐含规则来创建它. 3…
在windows下直接使用mingw32-make # ZTHREAD_A the static link library file of ZThread ZTHREAD_A = F:/ZJ/tools/cpp_libs/ZThread-2.3.2/bin/zthread_win32.a # ZTHREAD_H is the directory that has all the header # files of the ZThread library ZTHREAD_H = F:/ZJ/too…
规则语法 通常规则的语法格式如下: TARGETS : PREREQUISITES COMMAND ... 或者: TARGETS : PREREQUISITES ; COMMAND COMMAND ... 规则中" TARGETS"可以是空格分开的多个文件名,也可以是一个标签(例如:执行清空的" clean")." TARGETS"的文件名可以使用通配符,格式" A(M)"表示档案文件( Linux下的静态库.a文件)的成员…
实验表示测试出来的结论,没有代码理论依据 Makefile中,目标对应的命令结束标记是什么呢?换句话说,Make中怎么判断目标的最后一条命令? 例如常见的目标编写如下: test1: echo "test1" echo "test without empty line" 那如果目标下空一行呢? test2: echo "test2" echo "test with emtpy line" 如果目标命令还掺杂了ifeq,defi…