make几个知识点
即时变量和延时变量
在下面代码中,定义了一个值为x的x变量,以延时变量的方式将它的值赋给y,以即时变量的方式将它的值赋给z。
因为y为延时变量,所以y的取值并不会立即计算,而是在整个文件解析完成之后才开始计算y的值。
因为z为即时变量,所以运行到z:=$(x)
这句话时,z的值立即计算得出。
x = x
y = $(x)
z := $(x)
x = nothing
one:
@echo $(x)
two:
@echo $(y)
three:
@echo $(z)
运行命令make one two three
输出为
nothing
nothing
x
自动变量
$@
规则目标的文件名.如果目标是档案文件的一个成员,"$@
"就是档案文件的名称
$%
当目标是档案文件的一个成员时,"$%
"是该成员的名称.否则"$%
"为空
$<
第一个依赖文件的名称
$?
以空格隔开的比目标新的所有依赖文件名.若依赖文件是档案文件的成员,只使用成员的名称
$^
以空格隔开的所有依赖文件名.若依赖文件是档案文件的成员,只使用成员名称.无论一个依赖文件出现过多少次,"$^
"值中只包含其名称的一个拷贝
$+
与"$^
"相似,但多次列出的依赖文件按照它们在构造文件中出现的顺序复制.这对于链接命令中以特定顺序重复出现的库文件名有作用
$*
隐含规则匹配的词干.若目标为"dir/a.foo.b"且目标模式为"a.%.b",则词干为"dir/foo".对静态模式规则,词干是文件名中与目标模式中"%"匹配的部分.应避免在隐含规则或静态模式规则之外使用"$*
"
$(@D)
删除结尾斜杠的目标文件名的目录部分.若"$@
"的值为"dir/foo.o",则"$(@D)
"为"dir".若"$@
"不包含斜杠,则"$(@D)
"为"."
$(@F)
目标文件名中目录下的文件部分.如果"$@
"的值为"dir/foo.o",那么"$(@F)
"为"foo.o".它等同于"$(notdir $@)
"
$(*D)
词干中的目录部分,例如上例中的"dir"
$(*F)
词干中的目录下文件部分,例如上例中的"foo"
$(%D)
目标档案文件成员的目录部分.仅对形为"archive(member)"的档案文件成员目标有意义,且仅在member包含目录名时有用
$(%F)
目标档案文件成员中的目录下文件部分
$(<D)
第一个依赖文件的目录部分
$(<F)
第一个依赖文件的目录下文件部分
$(^D)
所有依赖文件的目录部分
$(^F)
所有依赖文件的目录下文件部分
$(?D)
比目标新的所有依赖文件的目录部分
$(?F)
比目标新的所有依赖文件的目录部分
one.java:two.java three.java
@echo 目标名称:$@
@echo 不带扩展名的目标名称(这个变量只能在含有%目标名的命令中使用):$*
@echo 第一个依赖文件的名称:$<
@echo 全部依赖,去重:$^
@echo 全部依赖,不去重,按照出现顺序出现:$+
@echo 全部需要重新构建的依赖:$?
%.java:
@echo this is $*.java
输入make命令,输出为:
this is two.java
this is three.java
目标名称:one.java
不带扩展名的目标名称:
第一个依赖文件的名称:two.java
全部依赖,去重:two.java three.java
全部依赖,不去重,按照出现顺序出现:two.java three.java
全部需要重新构建的依赖:two.java three.java
预定义变量
AR 归档维护程序的名称,默认值为 ar。
ARFLAGS 归档维护程序的选项。
AS 汇编程序的名称,默认值为 as。
ASFLAGS 汇编程序的选项。
CC C编译器的名称,默认值为 cc。
CCFLAGS C编译器的选项。
CPP C预编译器的名称,默认值为 $(CC) -E
。
CPPFLAGS C预编译的选项。
CXX C++编译器的名称,默认值为 g++。
CXXFLAGS C++编译器的选项。
FC FORTRAN编译器的名称,默认值为 f77。
FFLAGS FORTRAN编译器的选项。
make几个知识点的更多相关文章
- ASP.NET Core 中的那些认证中间件及一些重要知识点
前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...
- ASP.NET MVC开发:Web项目开发必备知识点
最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...
- UWP开发必备以及常用知识点总结
一直在学UWP,一直在写Code,自己到达了什么水平?还有多少东西需要学习才能独挡一面?我想对刚接触UWP的开发者都有这种困惑,偶尔停下来总结分析一下还是很有收获的! 以下内容是自己开发中经常遇到的一 ...
- C#高级知识点&(ABP框架理论学习高级篇)——白金版
前言摘要 很早以前就有要写ABP高级系列教程的计划了,但是迟迟到现在这个高级理论系列才和大家见面.其实这篇博客很早就着手写了,只是楼主一直写写停停.看看下图,就知道这篇博客的生产日期了,谁知它的出厂日 ...
- lucene 基础知识点
部分知识点的梳理,参考<lucene实战>及网络资料 1.基本概念 lucence 可以认为分为两大组件: 1)索引组件 a.内容获取:即将原始的内容材料,可以是数据库.网站(爬虫).文本 ...
- DoraCMS 源码知识点备注
项目需要研究了下DoraCMS这款开源CMS,真心做的不错:).用的框架是常用的express 4 + mongoose,代码也很规范,值得学习. 源码中一些涉及到的小知识点备注下: https:// ...
- atitit 商业项目常用模块技术知识点 v3 qc29
atitit 商业项目常用模块技术知识点 v3 qc29 条码二维码barcodebarcode 条码二维码qrcodeqrcode 条码二维码dm码生成与识别 条码二维码pdf147码 条码二维码z ...
- HTML5知识点总结
HTML5知识点总结(一) 一.HTML新增元素 1.IE9版本以下支持HTML5的方法 <!--[if lt IE9]> <script src="http://cdn. ...
- JavaScript易错知识点整理
前言 本文是我学习JavaScript过程中收集与整理的一些易错知识点,将分别从变量作用域,类型比较,this指向,函数参数,闭包问题及对象拷贝与赋值这6个方面进行由浅入深的介绍和讲解,其中也涉及了一 ...
- Sqlserver中一直在用又经常被忽略的知识点一
已经有快2个月没有更新博客了,实在是因为最近发生了太多的事情,辞了工作,在湘雅医院待了一个多月,然后又新换了工作...... 在平时的工作中,Sqlserver中许多知识点是经常用到的,但是有时候我们 ...
随机推荐
- 深度学习中目标检测Object Detection的基础概念及常用方法
目录 关键术语 方法 two stage one stage 共同存在问题 多尺度 平移不变性 样本不均衡 各个步骤可能出现的问题 输入: 网络: 输出: 参考资料 What is detection ...
- 使用rider做为unity的代码编辑器
使用Rider做的编写Unity代码的IDE,记录一些与VS不相同的笔记 安装和设置方法: 我使用Rider 2019.1 + Unity3D 2018.3.4,在安装完Rider之后,在Unity中 ...
- kali下ll命令无法使用
重装了系统之后,使用ll命令竟然发现报错了. bash: ll:未找到命令 果断解决一波: vim ~/.bashrc 将alias ll=’ls -l‘前面的注释符号#删掉 运行 问题完 ...
- DNS解析过程--笔试答题版
在运维笔试的时候,回答DNS解析的过程,不能写一大堆,一是不美观,二是浪费时间,应该怎么写呢?我觉得这样写比较好. 1.客户端:chche----hosts 2.DNS服务器:cache---递归-- ...
- 201871010135 张玉晶《面向对象程序设计(java)》第6-7周学习总结
201871010135 张玉晶<面向对象程序设计(java)>第6-7周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- Shell编程 | 脚本参数与交互及常见问题
在执行一个脚本程序时,会经常需要向脚本传递一些参数,并根据输入的参数值生成相应的数据或执行特定的逻辑. 向脚本传递参数 执行Shell脚本时可以带有参数,在Shell脚本中有变量与之对应进行引用.这类 ...
- java 随笔
Spring的scope="prototype"属性 - 多例 spring 默认scope 是单例模式(singleton),这样只会创建一个Action对象,每次访问都是同一个 ...
- 收藏一份devmem源码
/* * devmem2.c: Simple program to read/write from/to any location in memory. * * Copyright (C) 2000, ...
- 基于Django的Rest Framework框架的RESTful规范研究
一.什么是RESTful规范 总的来说:RESTful规范就是一个非技术,人为约定的一个面向资源的架构理念. REST与技术无关,代表的是一种软件架构风格,REST是Representational ...
- java包学习之JDBC
public class DemoJDBC { public static void main(String[] args) throws ClassNotFoundException, SQLExc ...