学会使用makefile:5

下面就是介绍一下简单的常用的makefile指令:

-n选项会答应出执行指令执行的顺序,但是不会真的去执行这个指令,这有助于确保某个指令的顺序执行的是正确的

-C选项可以切换到另一个目录下执行那个目录下的makefile,例如可以用于退回到上一层去执行当前层的makefile:

cd ..
make -C learnMakeFile
make: Enter Entering directory `/home/wc/learnMakeFile'
cc
-c -o main.o main.c
cc
-c -o stack.o stack.c
cc
-c -o maze.o maze.c
gcc main.o stack.o maze.o -o main
make: Leaving directory `/home/wc/learnMakeFile'

较大的项目会把不同的模块或子系统的源代码放在不同的子目录中,然后在每个子目录下都写一个该目录的Makefile,然后在一个总的Makefile中用 make -C 命令执行每个子目录下的Makefile。例如Linux内核源代码根目录下有 Makefile ,子目录 fs 、 net 等也有各自的 Makefile ,二级子目录 fs/ramfs 、 net/ipv4 等也有各自的 Makefile 。

在 make 命令行也可以用 = 或 := 定义变量,如果这次编译我想加调试选项 -g ,但我不想每次编译都加 -g 选项,可以在命令行定义 CFLAGS 变量,而不必修改Makefile编译完了再改回来:

$ make CFLAGS=-g
cc -g
-c -o main.o main.c
cc -g
-c -o stack.o stack.c
cc -g
-c -o maze.o maze.c
gcc main.o stack.o maze.o -o main


注意,如果在Makefile中也定义了 CFLAGS 变量,则命令行的值覆盖Makefile中的值,即外部会覆盖makefile内部的值。

转载于:https://my.oschina.net/u/2310741/blog/729159

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值