Makefile文件修改后,编译程序是否需要重新clean后,编译?
可否从Makefile的工作原理上剖析一下 ,是否每次都需要对工程代码,修改->make clean->make -j
Makefile文件修改后,编译程序是否需要重新clean后,编译?
可否从Makefile的工作原理上剖析一下 ,是否每次都需要对工程代码,修改->make clean->make -j
7 回答5.3k 阅读
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
3 回答3.9k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
Makefile从原理上说就是一堆依赖关系:
简单说就是,make会检查dependencies和target的新旧,如果target比较旧,那么就执行action。
对于一个典型的程序而言,target大多是可执行程序或者目标文件,dependencies大多是源代码(也许还有头文件之类),action大多是编译命令,比如
gcc -o $@ $^
,Makefile本身倒是很少会出现在这种依赖关系当中。从这个角度看,你改动了Makefile对于target本身有可能是没有影响的,重新make不一定有必要,但是有可能你对Makefile的改动造成了依赖关系的变化,这种情况下你可能需要重来一遍。