Makefile中: -g、-o、-c、-C、-f 、-D、-Wall、-L、-nostdlib 参数的含义。。。makefile中$< , $@ , $? , $$ , 和“四个$” 的区别

-C / -f / 相关命令:


-C:

Makefile中-C是递归调用子目录中的Makefile,-C选项后跟目录,表示到子目录下执行子目录的Makefile,顶层Makefile中的export的变量还有make默认的变量是可以传递给子目录中的Makefile的

–f :

-f file

指定file文件为描述文件,如果file参数为"-“符,那么描述文件指向标准输入。如果没有”-f"参数,则系统将默认当前目录下名为makefile或者名为Makefile的文件为描述文件。在Linux中, GNU make 工具在当前工作目录中按照GNUmakefile、makefile、Makefile的顺序搜索 makefile文件。

指定作为makefile的文件的名称。 如果不用该选项,那么make程序首先在当前目录查找名为makefile的文件,如果没有找到,它就会转而查找名为Makefile的文件。

顶层Makefile使用make -f调用子目录中的文件(文件名可以随意,不一定用Makefile作为文件名)作为Makefile,顶层Makefile中的export的变量也可以传递变量到底层目录,另外在命令行中加入变量赋值选项,将覆盖顶层Makefile中export的变量;

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

- -g、-o、-c、-C、-f 、-D、-Wall、-L、-nostdlib 含义:

例如:a.o b.o x.o: a.c b.c x.c

                 cc -c $<  -o  $@


其中: $< 表示 a.c   (即所有依赖的合集的第一个文件)
             $@ 表示 a.o b.o x.o (即所用目标的合集)


补充1:四个$  代表随机编号

              如 echo “rocme” > file.四个$ 的意思就是将“rocme”这个字符串写入file.1234 这个文件,其中1234这个数字是随机生成的。

补充2:$$ 表示真实的 $ 字符
            因为$字符已经被makefile用来做变量引用,如$(MAKE),所用如果需要用$$ 表示真实的 $。这个有啥用呢?Makefile引用变量只需要一个$符号就够了,为什么这里要两个呢?因为如果变量i是在shell的for循环中定义的,是属于shell中的变量。make在读到的时候会把它扩展成$i有点转义字符的意味),也就是说,make在第一遍解析的时候,会将 $$i 变成 $i,交将shell,shell再从$i中取出来i真正对应的值处理。也就是说$$的用处,一般在shell 的命令中,取出来真正的值的时候会用到

__build_one_by_one:
	$(Q)set -e; \
	for i in $(MAKECMDGOALS); do \
		$(MAKE) -f $(srctree)/Makefile $$i; \
	done

补充3:$?代表依赖文件列表中被改变过的所有文件

   $^代表a.c b.c x.c

                        
原文链接:https://blog.csdn.net/plc_jianghao/article/details/22577895

原文链接:https://blog.csdn.net/xiaoyink/article/details/108465261

原文链接: 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值