JJJ:Makefile 添加

  • make -C dirmake -f filename 的区别
    -C 选项
    Makefile中 -C 是递归调用子目录中的Makefile,-C 选项后跟目录,表示到子目录下执行子目录的Makefile,顶层Makefile中的 export的变量 还有 make默认的变量 是可以传递给子目录中的Makefile的。
    -f 选项
    顶层Makefile使用 make -f 调用 子目录中的文件(文件名可以随意,不一定用Makefile作为文件名) 作为Makefile,顶层Makefile中的export的变量 也可以传递变量到底层目录,另外在命令行中加入变量赋值选项,将覆盖顶层Makefile中export的变量

但是,经测试,在顶层Makefile中使用 -f 选项,例如 make -f ./xxx/xx/build.mk 此时make命令的工作目录仍然是顶层目录,即CUDIR变量 依然是 ./目录 而不是 ./xxx/xx/目录

#:~/test$ cat make/Makefile
MM:
        @echo `pwd`
        @echo $(CURDIR)
#:~/test$
#:~/test$ make -C make
make: Entering directory '/home/j30022395/test/make'
/home/j30022395/test/make
/home/j30022395/test/make
make: Leaving directory '/home/j30022395/test/make'
#:~/test$
#:~/test$ make -f make/Makefile
/home/j30022395/test
/home/j30022395/test
#:~/test$
  • Makefile中调用函数的方法:$(call 要调用的函数,函数的参数)

  • CURDIR 变量
    CURDIR 是 Makefile 中的一个变量:表示当前目录下。
    在 Makfile 中使用 $(CURDIR)

  • export 和 unexport
    如果你要传递变量到下级 Makefile 中,那么你可以使用这样的声明:export <variable ...>
    如果你不想让某些变量传递到下级 Makefile 中,那么你可以这样声明:unexport <variable ...>

  • make -s-s 选项
    1、如下的Makefile:

mytest:
    echo CURDIR = $(CURDIR)
    echo MAKE_VERSION = $(MAKE_VERSION)

2、make 执行结果:

jl@jl-virtual-machine:~/test$ make 
echo CURDIR = /home/jl/test
CURDIR = /home/jl/test
echo MAKE_VERSION = 4.1
MAKE_VERSION = 4.1
jl@jl-virtual-machine:~/test$ 

3、make -s 执行结果:

jl@jl-virtual-machine:~/test$ make -s 
CURDIR = /home/jl/test
MAKE_VERSION = 4.1
jl@jl-virtual-machine:~/test$ 

make -s 不打印make执行指令本身,但是 echo 的话会打印执行结果,一般类似于删除、编译这些操作是不会有log产生的
4、类似于用 make 执行如下的 Makefile:

mytest:
    @echo CURDIR = $(CURDIR)
    @echo MAKE_VERSION = $(MAKE_VERSION)
  • make -f 其它目录的一个Makefile
    就相当于将这个 其它目录的一个Makefile,cpoy到当前目录下,执行 make

  • 添加1个 FORCE 伪目标,每次编译的时候都会强制重新编译。

PHONY += FORCE
FORCE:
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值