文章目录

  • 1 make命令的使用
  • 2 变量的导出(export)
  • 3 Makefile中可以使用shell命令
  • 4 在Makefile中怎么放置第1个目标
  • 5 假想目标

1 make命令的使用

执行make命令时,它会去当前目录下查找名为“Makefile”的文件,并根据它的指示去执行操作,生成第一个目标。
我们可以使用“-f”选项指定文件,不再使用名为“Makefile”的文件,比如:

make  -f  Makefile.build

我们可以使用“-C”选项指定目录,切换到其他目录里去,比如:

make -C  a/  -f  Makefile.build

我们可以指定目标,不再默认生成第一个目标:

make -C  a/  -f  Makefile.build   other_target

2 变量的导出(export)

在编译程序时,我们会不断地使用“make -C dir”切换到其他目录,执行其他目录里的Makefile。如果想让某个变量的值在所有目录中都可见,要把它export出来。
比如“CC = $(CROSS_COMPILE)gcc”,这个CC变量表示编译器,在整个过程中都是一样的。定义它之后,要使用“export CC”把它导出来。


3 Makefile中可以使用shell命令

比如:

TOPDIR := $(shell pwd)

这是个立即变量,TOPDIR等于shell命令pwd的结果。


4 在Makefile中怎么放置第1个目标

执行make命令时如果不指定目标,那么它默认是去生成第1个目标。
所以“第1个目标”,位置很重要。有时候不太方便把第1个目标完整地放在文件前面,这时可以在文件的前面直接放置目标,在后面再完善它的依赖与命令。比如:

First_target:   // 这句话放在前面
....        // 其他代码,比如include其他文件得到后面的xxx变量
First_target : $(xxx)   $(yyy)   // 在文件的后面再来完善command

5 假想目标

我们的Makefile中有这样的目标:

clean:rm -f $(shell find -name "*.o")rm -f $(TARGET)

如果当前目录下恰好有名为“clean”的文件,那么执行“make clean”时它就不会执行那些删除命令。
这时我们需要把“clean”这个目标,设置为“假想目标”,这样可以确保执行“make clean”时那些删除命令肯定可以得到执行。
使用下面的语句把“clean”设置为假想目标:

.PHONY : clean

参考资料:

  1. 韦东山全系列视频第1季快速入门

makefile中的零星知识点相关推荐

  1. Makefile中的一些小知识点,及常用的makefile举例

    一.gcc -s(注意是小写的s)命令是什么意思?为什么用此命令编译后的程序比用优化后的程序还小? 这个参数会把符号表从最终的可执行文件中删除.没有符号表,你就不能用gdb调试了,常见的用法是: 比方 ...

  2. 十次方中的前端知识点随记

    1. 十次方中的前端知识点随记 好久没上传笔记了,主要最近的笔记都零零散散,知识点也不集中,就不传了:最近项目想用到前后端分离,而且前端我也想参与下,就先基本的学一遍,记点零星的笔记,各位能从中看到有 ...

  3. 【Linux + Makefile】Makefile中的.PHONY作用以及赋值运算(各种=符号)的区别

    笔者常年在Linux环境编程,经常在项目中与Makefile打交道,最近总结了几个Makefile的小的知识点,分享给大家. 通过阅读本文,你将了解到以下知识: 1.Makefilke中的.PHONY ...

  4. makefile 中 =, :=, ?=, +=的区别

    在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验 新建一个Makefile,内容为: ifdef DEFINE_VRE     VRE ...

  5. .PHONY makefile中的伪目标

    拿clean举例,如果make完成后,自己另外定义一个名叫clean的文件,再执行make clean时,将不会执行rm命令. 为了避免出现这个问题,需要.PHONY: clean ========= ...

  6. Makefile中指示符“include”、“-include”和“sinclude”的区别

    指示符"include"."-include"和"sinclude" 如果指示符"include"指定的文件不是以斜线开 ...

  7. Makefile中关于shell 语句使用的注意事项

    在Makefile中每一个shell语句相当于开启了一个bash进程,去执行这个语句,所以要使用判断和循环的时候,得保证他们执行的空间在一个bash进程当中,所以就应该添加 ";\ &quo ...

  8. linux Makefile 中使用 shell命令

    在makefile中要使用shell 命令必须加shell 例如 $(shell pwd) ,不加的话是空值,例如下例中的M就是空值 这个你写法如下:直接通过make 命令就可以运行下面的makefi ...

  9. Makefile中常用的函数

     常用函数调用 语法: $(<function> <arguments>)或 ${<function><arguments>} <functi ...

最新文章

  1. OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co
  2. Python学习笔记:SMTP服务器
  3. Qt Creator使用ClearCase
  4. IntelliJ IDEA使用(二):tomcat和jetty配置(转自:http://www.cnblogs.com/jenkinschan/p/6052948.html)
  5. SQL Server之体系结构
  6. CASE WHEN语句中加IN应该如何使用
  7. 安全的API接口解决方案
  8. 我的世界服务器开服文件夹,详细开服教程。想要自己开服的小伙伴儿 戳这里·...
  9. JAVA面试之互联网、经验篇
  10. Ubuntu 20.04.2 LTS安装微信(wine)
  11. 树莓派安装HackRF、LimeSDR、GNU Radio、Gqrx
  12. C和C++不安全?Android 支持 Rust 开发操作系统
  13. 免费思维导图软件,收藏
  14. HTML+CSS+JavaScript速成
  15. 【Matlab】一、解常微分方程ODE
  16. SANGFOR SCSA——协议基础
  17. python+opencv实现NCC模板旋转匹配(图像处理)
  18. [前端笔记——HTML介绍] 4.HTML文本基础+超链接+高级文本格式
  19. Python爬取wallhaven壁纸 2023.1.31
  20. 【论文精读CVPR_2022】High-resolution Face Swapping via Latent Semantics Disentanglement

热门文章

  1. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第15章-基于竞争关系的离散异构多智能体系统分组一致性
  2. 第八章 神经网络表示-机器学习老师板书-斯坦福吴恩达教授
  3. 构建根文件系统之busybox(三)最小根文件系统
  4. uclibc和glibc的差别
  5. git使用:本地分支merge到远程分支
  6. 实现基于注解(Annotation)的数据库框架(三)自定义注解(Annotation)
  7. Django Rest Framework
  8. Android Studio 错误: 非法字符: #39;\ufeff#39; 解决方式|错误: 须要class, interface或enum...
  9. 互联网巨头们的广州“云”棋局
  10. Mysql 拿指定经纬度与数据库多条经纬度进行距离计算