File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -127,6 +127,8 @@ Hello World!
127127
128128``` c
129129// main.c
130+ #include " print.h"
131+
130132int main () {
131133 print ();
132134 return 0;
@@ -247,6 +249,24 @@ Makefile 的亮点在于引入了文件间的依赖关系。
247249在项目较大时这能明显节省构建所需的时间,同时也能解决一些由于编译链接顺序造成的问题。
248250相较与输入一大串指令,单个的 `make [target]` 甚至是仅仅 `make`,也更加优雅和方便。
249251
252+ !!! tip "小知识"
253+
254+ 在 Makefile 中有一些隐含规则。即使我们的 Makefile 中没有显式书写这样的规则,make 也会按照这些隐含规则来运行。
255+ 例如,上文提到的自动将 `.c` 文件编译成 `.o` 就是一种隐含规则。
256+
257+ 除此之外,Makefile 中还有如下隐含规则:
258+
259+ - `filename.o` 的依赖会自动推导为 `filename.c`
260+ - `filename` 的依赖会自动推导为 `filename.o`
261+
262+ 利用这两条隐含规则,我们的 Makefile 还可进一步化简成:
263+
264+ ```make
265+ main.o : print.h
266+ print.o : print.h
267+ main : print.o
268+ ```
269+
250270# ### 其他的构建工具:CMake,ninja…… {#c-build-tools-other}
251271
252272一个更大的工程可能有上万、上十万份源文件,如果一一写进 Makefile,那依然会异常痛苦,且几乎不可能维护。
You can’t perform that action at this time.
0 commit comments