首页 > 其他分享 >$(CURDIR)/Makefile Makefile: ; 的作用

$(CURDIR)/Makefile Makefile: ; 的作用

时间:2023-11-12 19:13:09浏览次数:32  
标签:make Makefile 命令 构建 CURDIR 规则 作用

$(CURDIR)/Makefile Makefile: ;

 

在这个Makefile中,$(CURDIR)/Makefile Makefile: ; 是一个特殊的语法,它被用于取消Makefile默认的隐含规则。这个语句的作用是阻止Make命令在当前目录下自动查找和使用默认的隐含规则来构建目标。
通常情况下,如果没有指定如何构建某个目标,Make命令会根据文件的扩展名和默认规则来决定如何构建。但是,通过使用 $(CURDIR)/Makefile Makefile: ;,你可以明确地阻止Make命令使用默认规则,从而完全控制目标的构建过程。
简而言之,这个语句告诉Make命令不要使用默认规则来构建当前目录下的Makefile文件。

一般来说,Makefile: 这个目标是用来制定如何创建或更新名为 "Makefile" 的目标的规则。当在命令行运行 "make" 命令或者 "make Makefile" 命令时,这个目标就会被构建。
然而在 "`$(CURDIR)/Makefile Makefile:` ;"这条规则中,"Makefile:" 后面并没有跟随任何命令,因此这实际上是一个空规则,用途在于取消 Make 的隐含规则,而没有指向具体的构建方法。
特别地,如果对一个项目使用 "make" 命令,而该项目的 Makefile 中包含了类似你给出的规则,那么 "make" 命令就不会尝试寻找并运行任何默认的或者隐含的规则去构建名为 "Makefile" 的目标。
这样,就避免了可能存在的,由默认或隐含规则产生的意外构建行为。

说白了,直接在Makefile文件所在的目录运行命令make时,如果命中了 make Makefile,就会调用一条空命令什么都不做.

标签:make,Makefile,命令,构建,CURDIR,规则,作用
From: https://www.cnblogs.com/zxdplay/p/17827585.html

相关文章

  • 作用域插槽
    <template><div><MyTable:data="list"><template#default="obj"><button@click="del(obj.row.id)">删除</button></template></MyTable><MyTab......
  • windwos小工具推荐,只有700kb不到,但作用确很大!
    看个图,简单了解下,获取地址在文末RAMMap:Windows的物理内存使用分析工具RAMMap是一款由MicrosoftSysinternals团队开发的免费工具,它可以让你以不同的方式查看Windows系统的物理内存使用情况。它支持WindowsVista及更高版本的客户端和服务器操作系统。RAMMap有几个不......
  • 变量,常量,作用域,变量的命名规范
       ......
  • IPTABLES的NAT表的作用:
    架构图如下: [root@gitlab~]#iptables-tnat-APOSTROUTING-s192.168.3.0/24-jSNAT--to-source192.168.3.110[root@gitlab~]#sysctl-p[root@gitlab~]#cat/etc/sysctl.conf#sysctlsettingsaredefinedthroughfilesin#/usr/lib/sysctl.d/,/run/sysctl.d/......
  • 程序的作用
    程序就是用来处理数据的!新闻软件提供的新闻内容、评论……是数据电商软件提供的商品信息、配送信息……是数据运动类软件提供的运动数据……是数据地图类软件提供的地图信息、定位信息、车辆信息……是数据即时通讯软件提供的聊天信息、好友信息……是数据……3.1......
  • requestAnimationFrame虽然是异步函数,但是由于i是用let定义的,每一次都会生成一个块级
    以下代码执行后,console输出的信息是?for(leti=0;i<5;i++){requestAnimationFrame(()=>console.log(i));}01234requestAnimationFrame虽然是异步函数,但是由于i是用let定义的,每一次都会生成一个块级作用域,来把当前值和requestAnimationFrame放在这个作用域中......
  • let是es6中声明变量的方式,有自己的作用域块,可以放变量,所以let绑定for循环时,每个i都有
    for(leti=0;i<2;i++){setTimeout(function(){console.log(i)},100);}for(vari=0;i<2;i++){setTimeout(function(){console.log(i)},100);}问:控制台打印的结果是?0122①Js是单线程的,Settimeout是异步宏任务,所以代码执行遇到异步的,就......
  • Vue中 name 有什么作用?data 为什么是函数而不是对象?
    Vue中name有什么作用?项目使用keep-alive时,可搭配组件name进行缓存过滤DOM做递归组件时需要调用自身namevue-devtools调试工具里显示的组见名称是由vue中组件name决定的data为什么是函数而不是对象?组件中data是Vue的实例组件共享data属性,当......
  • 基于Forcite模块的分子动力学研究药剂与矿物相互作用实例(一)
    关键词:相互作用MS Forcite分子动力学径向分布 笔名:杨过Forcite模块是分子动力学计算的主要模块,研究范围广,可以对多种周期性体系进行计算分析,在矿物分选领域中主要是计算分析药剂与矿物相互作用,在不同计算参数条件下可以实现药剂与矿物相互作用模型的预测与分析,从而得到表面......
  • 缺少perl模块; 当安装对应名称模块不起作用的解决方法
     001、问题描述安装RepeatModeler-2.0.2a软件时提示缺少对应的perl模块,利用cpan安装对应模块,并不能解决问题(不知道原因)。 002、解决思路01、利用cpan安装缺少的模块名称安装,根据屏幕输出记录安装的软件包02、利用yum-yinstallperl*&>install_log.txt安装所有的per......