Skip to content

Commit 348b13b

Browse files
Integral-Techtaoky
authored andcommitted
Ch07: fix main.c & add more simplified Makefile as a tip
1 parent 4007f3f commit 348b13b

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

docs/Ch07/index.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ Hello World!
127127

128128
```c
129129
// main.c
130+
#include "print.h"
131+
130132
int 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,那依然会异常痛苦,且几乎不可能维护。

0 commit comments

Comments
 (0)