首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Makefile的伪目标

1、Makefile伪目标的格式: .PHONY : clean clean:     rm xxxx 2、Makefile伪目标的作用: 第一种情况: 如果我们需要书写这样的一个规则:规则所定义的命令不是去创建目标文件...当文件夹中没有clean这个文件的时候,我们输入“make clean”能按照初衷执行,但是一旦文件夹中出现clean文件,我们再次输入“make clean”,由于这个规则没有任何依赖文件,所以目标被认为是最新的而不去执行规则所定义的命令...所以rm命令不会被执行。为了解决问题,我们将目标clean定义成伪目标。...clean:   rm xxxx 如果同一个目录下有一个clean文件,那么  make clean的动作将不会执行rm动作; 所以,增加.PHONY伪目标的使用的话,就会忽略目录下clean这个文件,...直接执行rm动作; 第二种情况: 伪目标的另一种使用场合时在make的并行和递归执行过程中。

1.4K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    makefile中伪目标的理解

    我们知道Makefile中的语法是这样: target ... : prerequisites ... command … … 2....前两个都会生成目标,而第三个不会生成目标,仅仅希望执行所在规则(clean)定义的命令(rm)。 这个时候就需要伪目标出马了:目的不是为了生成目标,仅仅是希望执行其所在规则定义后面的命令。 3....*.o 就像上面这样,多一个 .PHONY声明,那么clean就是伪目标了 4....为什么要使用伪目标: 1)避免在我们的Makefile中定义的只执行命令的目标和工作目录下实际文件名字出现冲突。...(比如,假如当前目录有一个clean文件,那么上面的 make clean 就不能达到我们的预期了) 2)提高执行效率,被声明为伪目标后,make在执行此规则时不会视图去查找隐含规则来创建这个目标。

    1.6K80

    【Linux系统编程】—— 自动化构建工具Makefile指南

    Makefile 是配合 make 命令使用的文件,其中 make 是解释并执行 Makefile 中指令的工具。...清理目标:通过 make clean 清理编译生成的目标文件。 项目清理 Makefile 通常会定义一个名为 clean 的目标,用于清理工程文件。...由于 clean 不直接或间接依赖于第一个目标文件,因此需要显式执行: make clean 设置 .PHONY 伪目标可确保 clean 总是被执行: .PHONY: clean clean: rm...-f code .PHONY 的作用 .PHONY 让 Makefile 忽略源文件与可执行目标文件的时间对比,总是执行伪目标的命令。...目标检测:读取 Makefile 的第一个目标文件(例如 myproc)。 依赖检查: 如果目标文件不存在或依赖文件较新,则执行命令生成目标文件。 递归检查依赖关系,直到满足所有条件。

    13610

    我能看懂的MakeFile(自命名,多文件,多目标)

    我们的目标文件(就是拿来运行的那个)其实就是通过文件之间的依赖关系,对源文件进行编译而得到的,但是这个依赖关系系统不知道,所以需要我们告诉系统。Makefile就是一种很优秀的方法。...在all那一行上面的部分属于量赋值部分,右边的(*.o)文件是目标中间文件,后面需要将它实现。系统对源文件进行转换成中间文件,而后将这些中间文件合成可执行文件。...all : front back log sql .PHNOY : all 这两行的意思是:.PHNOY:all将all定义为一个伪目标,不用管那么多,只要知道这样就可以生成多个目标了。...all:front back log sql里面的front back log sql这四个都是目标,可以一次性生成。 当然,你不用伪目标的话应该是不行了。...下面那个clean,也是一个伪目标。 rm -rf ***** 用于将多余文件删除,不过需要手动调用。 调用方式: make -clean。 然后再讲一点,给Makefile命名。

    1K30

    ssh远程执行目标机器上的命令

    一句话: ssh -t -p 端口号 用户名@远程机器IP '远程机器上的命令完整路径' 例如:   ssh -t -p 22 yangjunming@dev '/opt/app/deploy.sh'...注意事项: 一般先配置ssh免密码登录,然后结合这个可以实现一键远程自动部署,大概思路如下: a)先在本机build项目(ant/maven/gradle均可) b) 然后打包成tar并copy到远程机器的指定目录...(最简单的方式就是用scp) c) 调用远程机器上的shell脚本,解压tar并执行nohup之类的命令重启应用(如果考虑到备份的话,可以在解压前,先备份原来的应用或目录) 注:如果启用过程中,依赖一些环境变量...,比如:大部分java应用都依赖JAVA_HOME,CLASSPATH这二个环境变量,假设这二个环境变量是在/etc/profile里设置的,强烈建议在shell脚本开头,写上source /etc/profile...强制让环境变量生效,否则可能出现启动过程中,无法正常找到环境变量的各种诡异问题。 d) 删除(或备份)远程机器上的tar包

    1.2K100

    CVPR 2020 | 南大提伪监督目标定位方法,弱监督目标定位的最新SOTA

    编译 | VincentLee 来源 | 晓飞的算法工程笔记 导读:论文提出伪监督目标定位方法(PSOL)来解决目前弱监督目标定位方法的问题,该方法将定位与分类分开成两个独立的网络,然后在训练集上使用Deep...基于这个观察,将WSOL分为类不可知目标定位以及目标分类两部分,如图1所示,命名为伪监督目标定位(Pseudo Supervised Object Localization, PSOL)。...论文贡献主要如下: 弱监督目标定位应该分为类不可知目标定位和目标分类两个独立的部分,提出PSOL算法 尽管生成的bbox有偏差,论文仍然认为应该直接优化他们而不需要类标签,最终达到SOTA 在不同的数据集上...再用阈值过滤,但是一般阈值十分难确定 受selective search和Faster-RCNN的类不可知过程的启发,将WSOL分成两个子任务,类不可知的目标定位任务和目标分类任务,提出PSOL,直接通过伪...结论 论文提出伪监督目标定位方法(PSOL)来解决目前弱监督目标定位方法存在的问题,该方法将定位与分类分开成两个独立的网络,然后在训练集上使用Deep descriptor transformation

    1.1K30

    化繁为简,弱监督目标定位领域的新SOTA - 伪监督目标定位方法(PSOL) | CVPR 2020

    论文提出伪监督目标定位方法(PSOL)来解决目前弱监督目标定位方法的问题,该方法将定位与分类分开成两个独立的网络,然后在训练集上使用Deep descriptor transformation(DDT)...基于这个观察,将WSOL分为类不可知目标定位以及目标分类两部分,如图1所示,命名为伪监督目标定位(Pseudo Supervised Object Localization, PSOL)。...权重)以及定位与分类耦合导致的取舍问题   论文贡献主要如下: 弱监督目标定位应该分为类不可知目标定位和目标分类两个独立的部分,提出PSOL算法 尽管生成的bbox有偏差,论文仍然认为应该直接优化他们而不需要类标签...再用阈值过滤,但是一般阈值十分难确定   受selective search和Faster-RCNN的类不可知过程的启发,将WSOL分成两个子任务,类不可知的目标定位任务和目标分类任务,提出PSOL,直接通过伪...CONCLUSION ***   论文提出伪监督目标定位方法(PSOL)来解决目前弱监督目标定位方法存在的问题,该方法将定位与分类分开成两个独立的网络,然后在训练集上使用Deep descriptor

    87900

    Linux 下的make命令与Makefile

    “make pro2”来单独编译目标“pro2” 即然make可以指定所有makefile中的目标,那么也包括“伪目标”,我们可以根据这种性质来让我们的makefile根据指定的不同的目标来完成不同的事...all:这个伪目标是所有目标的目标,其功能一般是编译所有的目标。 clean:这个伪目标功能是删除所有被make创建的文件。...install:这个伪目标功能是安装已编译好的程序,其实就是把目标执行文件拷贝到指定的目标中去。 print:这个伪目标的功能是例出改变过的源文件。 tar:这个伪目标功能是把源程序打包备份。...dist:这个伪目标功能是创建一个压缩文件,一般是把tar文件压成Z文件。或是gz文件。 TAGS:这个伪目标功能是更新所有的目标,以备完整地重编译使用。...check和test:这两个伪目标一般用来测试makefile的流程。 如果你要书写这种功能,最好使用这种名字命名你的目标,这样规范一些,规范的好处就是——不用解释,大家都明白。

    10.2K20

    makefile 基础、进阶及常用 makefile

    命令:通过执行该命令由依赖文件生成目标 makefile 工作原理 1、若想生成目标,检查规则中的依赖条件是否存在,如不存在,则寻找是否有规则用来生成该依赖文件 2、检查规则中的目标是否需要更新,必须先检查它的所有依赖...,依赖中有任一个被更新,则目标必须更新 分析各个目标和依赖之间的关系 根据依赖关系自底向上执行命令 根据修改时间比目标新,确定更新 如果目标不依赖任何条件,则执行对应命令,以示更新 一个最简单的 makefile...$@:在命令中使用,表示规则中的目标 $的第一个条件 $^:在命令中使用,表示规则中的所有条件,组成一个列表,以空格隔开,如果这个列表中有重复的项则消除重复项。...makefile 中的 all 因为 makefile 的执行流程是找到第一个目标作为最终生成的目标,如果顺序错乱了,makefile 就可能报错,all 方法就是解决这个问题而存在的,并且,all 方法可以让一个...解决这个问题的办法就是将 clean 方法声明为一个_伪目标_,做就就是让 clean 无论如何都更新,同样我们生成的 all 目标也可能会出现这种情况,所以我们将它们两个都声明为伪目标,方法如下: src

    43210

    make与makefile

    Makefile并不会关心命令是如何执行的,仅仅只是会去执行所有定义的命令,和我们平时直接输入命令行是一样的效果。 1、目标即要生成的文件。...3.伪目标:.PHONY 用 .PHONY 修饰,伪目标的特性是,总是被执行的。 因此,伪目标常用在清理临时文件、测试项目、生成文档、打包发布等。...通过定义伪目标,可以方便地执行这些操作,而无需手动输入复杂的命令。其中,我们最常用在清理临时文件。...避免与同名文件冲突:有时候,可能会有与目标同名的文件存在。通过定义伪目标,可以避免与同名文件产生冲突。伪目标的存在告诉 Make 工具该目标不是用于生成文件,而是执行相应的操作。...组织和管理构建任务:伪目标可以用来组织和管理构建流程中的各个任务或操作。通过定义伪目标,可以将相关的任务组织在一起,并通过依赖关系和命令定义来控制它们的执行顺序。

    8710

    技术栈系列基础篇2-Makefile

    上面那条指令若是找不到include的目标文件,会报错伪目标clean: rm *.o temp伪目标不会自动被执行,只能显式地调用执行。...但是上面伪目标的写法有一个缺陷,若是当前目录下存在有一个文件名为"clean",那么根据我们的规则,command将不会被执行,因为目标已经存在了,为了解决这个问题,我们可以使用一个特殊的标记...“clean”文件,我们的command都将会被执行了常见伪目标伪目标描述all这个伪目标是所有目标的目标,其功能一般是编译所有的目标。...clean这个伪目标功能是删除所有被make创建的文件。install这个伪目标功能是删除所有被make创建的文件。print这个伪目标的功能是例出改变过的源文件。...TAGS这个伪目标功能是更新所有的目标,以备完整地重编译使用。check 和test这两个伪目标一般用来测试makefile的流程。常见问题1.

    59130

    【Linux操作系统】自动化编译make和Makefile

    二.makefile文件规则 1.基本规则 2.举一个例子 3.伪目标 4.其他规则 三.文件三个时间问题-make程序 1.三个时间何时更新 2.touch的两个作用 3.make程序如何知道依赖文件是否更新...3.伪目标 介绍伪目标前我们先讲一讲实目标的概念: 实目标:命令执行后真正要生成的文件名, test就是实目标 伪目标:命令执行后不会生成实际文件,常用于辅助操作, .PHONY是伪目标的标注符...,clean是伪目标,不会生成实际名为clean的文件....伪目标的特点:伪目标可以总是被执行[为什么后面讲] 4.其他规则 变量名 含义 $@ 目标文件,可表示test $^ 所有的依赖文件,可表示test.c $< 第一个依赖文件 test:test.c...make的时候,会将所执行的命令回显到终端,带@则不回显 为什么在命令行执行的时候,执行第一组依赖关系和依赖方法的命令是make,执行第二组依赖关系和依赖方法的命令却是make clean?

    85940

    Makefile文件编写

    对于标签这种特性,在后续的“伪目标”章节中会有叙述。 prerequisites就是,要生成那个target所需要的文件或是目标。 command也就是make需要执行的命令。...(任意的shell命令) make工作 默认执行 make 命令时, GNU make在当前目录下依次搜索下面3个文件 "GNUmakefile", "makefile", "Makefile", 如果找到...参数 含义 --debug[=] 输出make的调试信息, options 可以是 a, b, v -j --jobs 同时运行的命令的个数, 也就是多线程执行 Makefile -r...输出执行的命令以及命令执行的结果, 出错的话停止执行 前缀 @ 只输出命令执行的结果, 出错的话停止执行 前缀 - 命令执行有错的话, 忽略错误, 继续执行 伪目标 伪目标并不是一个"目标(target...典型的伪目标是 Makefile 中用来清理编译过程中中间文件的 clean 伪目标, 一般格式如下: .PHONY: clean <-- 这句没有也行, 但是最好加上 clean: -rm

    1.2K30

    【Linux课程学习】makeMakefile:Linux项目自动化构建工具

    2.整个工程的编译只需要一个命令就可以完成编译、连接以至于最后的执行。极大提高了效率。 所以对于程序员来说,make/Makefile是很重要的。...如果只写make,目标文件省略,那么会生成第一个目标文件,也就是makefile文件最开始的文件。 二.makefile文件的构成: make是一条命令,makefile是一个程序。...如下: $@代表test $^代表test.cpp 四.对于伪文件和时间戳的理解: 伪文件: 用途: 伪文件不会真正生成一个文件,伪目标文件一般用于对文件清理,安装,测试等用途。...make有一个特点,如果目标文件的时间戳比依赖文件新,就是时间在依赖文件后面,就不会新生产目标文件,而是提示up to data 这样的情况下,test的时间在test.cpp后面,就不会执行依赖方法...相反伪文件不会生成真的文件,所以不会出现这种情况,可以一直执行make。 例如 : 只是到后面不会做什么事情而已。

    15610

    【Linux笔记】make工程管理工具(二)

    目标:往往是程序的中间或者最终生成的文件名,比如目标文件、可执行文件等。 依赖:是指用来产生目标文件的输入文件名,一个目标往往依赖于一个或多个文件。...除此之外,这个文件中, #符号后面是注释, clean 是一个特殊的目标,它没有依赖,称为伪目标。 规则是Makefile文件中的最基本的、也是最核心的部分。Makefile中还有其他内容。...Makefile文件主要包含5个方面内容:显示规则、隐式规则、变量、文件指示、注释、实目标与伪目标等。 (1)显式规则。显式规则说明了,如何生成一个或多的的目标文件。...如果你要在你的Makefile 中使用#字符,可以用反斜框进行转义,如:\#。 (6)实目标与伪目标。Makefile 文件中的目标分为两类:实目标和伪目标。...像clean 这种伪目标,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行。

    1.7K10

    深度刨析makefile

    5. makefile 的伪目标 (1)什么是伪目标 有时候,我们并非真正的想要生成一个目标,而是想让 makefile 执行这个目标后面的命令,这时候我们可以通过伪目标来实现。...伪目标还有两个用途,就是递归调用 makefile 和实现多文件编辑,这里不再详细介绍。下面列出 makefile 常用的一些伪目标以及他们的含义。...install 这个伪目标功能是安装已编译好的程序,其实就是把目标执行文件拷贝到指定的目标中去。 print 这个伪目标的功能是例出改变过的源文件。...,在 makefile 发布时,常用的用于实现编译、安装、打包等功能的伪目标已经在前面 makefile 的伪目标章节列出,这些伪目标在大型工程中非常有用。...这里的伪目标 all 作为最终目标,把所有要生成的多个可执行文件作为 all 的依赖。

    13210

    Linux学习笔记(二)、常用指令(下)

    2)、找到Makefile文件以后按照Makefile中定义的规则去编译生成最终的目标文件。 3)、如果目标文件不存在或者目标所依赖的文件比目标文件新的话就会执行后面的命令来更新目标。...7、Makefile伪目标 回想之前的Makefile规则格式: 目标:依赖文件。...一般的文件名都是要生成的伪文件,而伪目标不代表真正的目标名,在执行make命令时通过指定这个伪目标来执行器所在规则所定义的命令。...伪目标的主要作用是避免Makefile中定义的只执行命令的目标和工作目录下的实际文件出现名字冲突。...在Makefile文件中,将clean声明为伪目标,就是在clean的上一行添加声明: .PHONY:clean 8、Makefile条件判断 Makefile也支持条件判断,条件关键字为

    2.4K21
    领券