JJJ:Makefile 添加
make -C dir
和make -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:
JJJ:Makefile 添加相关推荐
- c++ 函数指针_开发经验分享(5) 修改Makefile实现C/C++混合编程
◆ ◆ 前言 ◆ ◆ Arduino/Stm32duino上的部分库使用C++写的,所以如果想移植库就需要使Stm32CubeMX生成Makefile支持C++的编译.借由文中方法实现了将Ard ...
- linux网卡内核文件在哪里,linux-2.6.35内核配置和网卡驱动添加
[环境] 1:Ubuntu 10.10 2:u-boot-2010.03 3:linux-2.6.35 4:优龙FS2410 5:交叉编译器:arm-none-linux-gnueabi-gcc ve ...
- linux系统添加网卡驱动,Linux 2.6.35内核配置和网卡驱动添加
[环境] 1:Ubuntu 10.10 2:u-boot-2010.03 3:linux-2.6.35 4:优龙FS2410 5:交叉编译器:arm-none-linux-gnueabi-gcc ve ...
- linux2.6内核Makefile详解
熟悉内核的Makefile对开发设备驱动.理解内核代码结构都是非常重要的 linux2.6内核Makefile的许多特性和2.4内核差别很大,在内核目录的documention/kbuild/make ...
- Linux内核的Makefile和kconfig解读
一.概述 在内核编译中如何将各个目录树中的文件组织起来编译是一个很重要的问题,并且要根据用户配置来编译特有的内核.为了解决这个问题,内核使用两种文件,Makefie和Kconfig.分布到各目录的Kc ...
- linux添加驱动目录,Android系统添加Linux驱动
Linux内核是可配置,进入到linux目录,输入make menuconfig 将会有模块选择界面,前两句是 scripts/kconfig/mconf Kconfig .config - Linu ...
- 良好的Makefile实践
1. 背景 这篇文章的主要目的是记录一些可以在Makefile中使用的技巧,以便可以为Makefile本身中的每个目标添加文档,并且可以将其作为make目标查看(例如make help). 在项目中拥 ...
- Android 驱动(13)---Makefile, Kconfig和.config关联关系
Makefile, Kconfig和.config关联关系 Makefile, Kconfig和.config关联关系 第一步,明确Kconfig是配置文件,现在比如要加入新的内核配置,必须在相关Kc ...
- java makefile jar包_makefile PRODUCT_BOOT_JARS 处理流程及实例
1. 含义 PRODUCT_BOOT_JARS 最终被编译到system/framework,并被添加到BOOTCLASSPATH路径: 2.1 引用makefile PRODUCT_BOOT_JAR ...
最新文章
- ui动效 unity_Unity - UIWidgets 2. 控件组合
- pytorch中Schedule与warmup_steps的用法
- Comparable接口与Comparator接口
- mysql blob取值_MySQL 数据类型:
- 百度研究院商业智能实验室招聘研究实习生!
- 一篇博客读懂设计模式之-----策略模式
- MySQL字符串类型
- 聚类分析(一)基本思想
- Leaflet使用vector tiles 标注label设置
- R12.2.6 installation failed with - Unable to rename database
- 强制定义某个变量的内存地址
- python测试系列教程 —— YAML配置文件语法教程
- 整理并记录电压比较器
- mac vs 返回上一步_Mac 上 VSCode常用快捷键
- mysql 服务无法启动
- C++中的protected
- 少儿计算机基础知识,学会这三个小知识,轻松入门少儿编程
- matlab自带的优化工具箱,MATLAB 自带优化工具箱(optimization Tool)之遗传算法简述...
- 24小时学会,从抓包到接口测试
- crmeb多商户系统安装(1)
热门文章
- 论文学习笔记 SIMC: ML Inference Secure Against Malicious Clients at Semi-Honest Cost
- 我的天空是灰色的......
- php 5.3中的一个type hinting的用法
- Ubuntu操作-07 GNOME-TWEAKS
- mysql root密码是什么_mysql如何查看root密码是什么
- 求母牛生小牛函数c语言,编程求解以下问题 若一头母小牛,从出生的第四个年头开始每年生一头小母牛,按此规律,第n年时有多少头母牛?(要求用两种方法)...
- 百度个性化地图如何在网页中使用?
- c语言孩子兄弟法存储一棵树,树的孩子兄弟表示法
- 一键U盘启动快捷方式
- MYSQL--架构--MGR--理论--04--事务和冲突检测机制