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

是否有可能在GNU makefile中有多个.PHONY目标?

在GNU makefile中是可以有多个.PHONY目标的。.PHONY目标是指那些不对应实际文件的目标,而是用来执行一系列命令或其他目标的标记。它通常用于定义一些常用的操作,比如clean、install等。

在makefile中,可以通过在目标前加上.PHONY关键字来声明一个目标为.PHONY目标。例如:

.PHONY: clean

clean:

代码语言:txt
复制
rm -rf *.o

.PHONY: install

install:

代码语言:txt
复制
cp *.o /usr/local/lib

上述例子中,clean和install都被声明为.PHONY目标。当执行make clean或make install时,make命令会执行相应的命令,而不会检查是否存在对应的文件。

.PHONY目标的优势在于可以避免与实际文件同名的目标产生冲突,并且可以方便地定义一些常用的操作。它常用于定义清理操作、安装操作等。

在腾讯云中,相关的产品和服务可以参考以下链接:

  1. 云服务器(CVM):https://cloud.tencent.com/product/cvm
  2. 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  3. 云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  4. 人工智能服务(AI Lab):https://cloud.tencent.com/product/ai
  5. 物联网平台(IoT Explorer):https://cloud.tencent.com/product/iotexplorer
  6. 移动开发平台(MTP):https://cloud.tencent.com/product/mtp
  7. 云存储(COS):https://cloud.tencent.com/product/cos
  8. 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  9. 腾讯云元宇宙:https://cloud.tencent.com/product/tencent-meta-universe

请注意,以上链接仅供参考,具体的产品和服务选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 Makefile 构建指令集

Makefile 基本语法 : target 其实就是执行的目标, prerequisites 是执行这条指令的前置条件, commands...为了解决这个问题,我们需要使用 PHONY 声明 target 其实是伪目标: APP=myapp .PHONY: buildbuild: clean go build -o ${APP} main.go....PHONY: cleanclean: rm -rf ${APP} 多个 PHONY 也可以统一声明在一行中: .PHONY: build clean 递归的目标 假设我们的工程目录结构如下:...,它可能是一个单独的模块,也需要打包构建,并且定义自己的 Makefile : # ~/project/mymodule/Makefile APP=module build: go build...判断语句 假设我们的指令依赖于环境变量 ENV ,我们可以使用一个前置条件去检查是否忘了输入 ENV : .PHONY: runrun: check-env echo ${ENV} check-env

89210

Makefile学习2

Makefile学习2 Makefile条件判断 使用条件判断,可以让make在编译程序时,根据不同的情况,执行不同的分支:可以执行不同的命令,使用不同的编译参数,生成不同的目标。...ifdef 关键字 ifdef 关键字用来判断一个变量是否已经定义。如果变量的值非空(在Makefile中,没有定义的变量的值为空),表达式为真。...Makefile函数 GNU make 提供了大量的函数用来处理文件名、变量、文本和命令。通过这些函数,用户可以节省很多精力,编写出更加灵活和健壮的Makefile。...对于 GNU make内嵌的函数,直接引用就可以了;对于用户自定义的函数,要通过make的call函数来间接调用。 函数和参数列表之间要用空格隔开,多个参数之间使用逗号隔开。...在Makefile中可以使用的通配符:* 、? 、 […]。通配符的使用方法和含义和在shell中一样。 通配符 使用说明 * 匹配0个或者是任意个字符 ?

30610

使用Makefile构建Docker

直到一天,发现有人使用Makefile来存储操作,瞬间感觉很棒。 这里简单记录Makefile的简单用法。 Makefile是什么 Makefile是make命令的规则配置文件。...GNU(GNU's Not Unix)是一个类Unix系统, 目标是创建一套完全自由的操作系统。在Linux出现之前,GNU已经完成了除了内核之外大部分的软件。....PHONY: build start push 表示, build start push 这3个target,不检查当前目录下的文件,直接执行命令。...Docker构建用的指令 我常用的Makefile如下 NAME = ryan/airflow VERSION = 1.10.4 .PHONY: build start push build: build-version...docker push ${NAME}:${VERSION}; docker push ${NAME}:latest 构建一个版本的镜像 make build 构建完毕,运行一下镜像,看看内容是否正确

3.7K30

Go 项目使用 Makefile

02 make 和 Makefile make 命令行工具可以自动判断是否需要重新编译程序,实际上 make 不仅限于程序,我们可以使用它来描述任何任务,只要其他文件发生更改,某些文件就必须从其他文件自动更新...在实际项目开发时,我们可能需要构建多个操作系统的可执行文件,我们再编写一个 Makefile,新增三个“伪目标”,分别是windows、linux 和 darwin。...因为 make 发现与“伪目标”同名的文件已存在,将不会再重新构建,所以就不会运行指定的 command,为了避免出现该问题,可以使用内置目标名.PHONY声明这些“伪目标”名是“伪目标”,而不是与“伪目标...执行 make all 命令,可以批量执行多个“伪目标”。...#Introduction https://www.gnu.org/software/make/manual/make.html#Phony-Targets https://go.dev/doc/articles

1.8K20

Makefile总结

目前centos 7.3 GNU的make版本是3.82 为什么要用Makefile 在做C/C++开发过程中,比如有如下文件: a.c b.c main.c 编译生成可执行二进制文件 gcc a.c...,编译过程会判断文件是否有过修改,只对修改的文件重新编译生成目标文件,不仅提高了效率,还减少了出错。...规则 目标文件:依赖文件 [Tab]系统指令1 (注意:系统指令前必须有tab) 示例 例如现有main.cpp test.cpp test.h三个文件,用Makefile实现增量编译(当其中有一个文件变化时...Makefile中有一些预定义函数,形式 $(函数名 参数列表) 参数列表:以逗号分隔 函数名和参数之间用空格分开 函数1:shell 获取当前目录路径: PWD = $(shell pwd) 函数2...在上边的Makefile中把clean定义为伪目标即可 .PHONY:clean 还有个特表的伪目标 all ,如我们通过Makefile创建多个可执行文件时,可以使用到: 如: all: bin1 bin2

94610

【Linux】Linux 项目自动化构建工具 -- makemakefile 的使用

文章目录 一、什么是 make/makefile 二、如何编写 makefile 三、make 的工作原理 1、make 的使用 2、make 的依赖性 3、项目清理 4、.PHONY目标 四、Linux...GNU 的 make;可见,makefile 已经成为了一种在工程方面的编译方法。...在编写 makefile 时有几个需要注意的地方: makefile 的文件名必须是 makefile/Makefile,不能是其他名称,否则 make 识别不了; 依赖文件可以多个,也可以没有;...在上面的C语言例子中,makefile 中一共有两个目标文件 – test.out 和 clean;如下,我们输入 make 它默认只会执行第一个目标文件;当然,我们也可以通过指定多个目标文件来让它形成多个目标文件...的所有时间) 在了解了 make 是如何判断是否要重新执行依赖方法形成目标文件之后,.PHONY 的原理和作用也显而易见了 – 被 .PHONY 修饰的目标文件不根据文件的修改时间先后来判断是否需要重新执行

1K00

Linux项目自动化构建工具-makeMakefile

前言 makefile什么用?...依赖关系和依赖方法 mytest:code.c称之为依赖关系 mytest是目标文件,使用make命令后,生成的运行文件叫mytest code.c是依赖文件列表,如果有多个时使用空格符隔开,例如:code.c...这里的要钱就是表明了依赖方法 项目清理 clear是一个种特殊的依赖关系,clear也是目标文件,只不过后面什么都不跟 rm -f mytest是依赖方法,是删除文件 如何理解.PHONY: 在读取makefile...一般清理项目会总是执行,因此习惯上会有:.PHONY:clear 为什么makefile对最新的可执行程序默认不想重新生成 如果项目种存在很多个源文件,如果在这些源文件中只进行了很小的改变,如果去把所有的源文件重新编译一遍...如果被.PHONY:修饰,就忽略了时间,于是可以总是被执行 我们想需要的makefile code.exe:code.c gcc -o $@ $^ 可以理解为取内容,@表示目标文件,^表示依赖文件

15710

Makefile教程

改进地方两点: (5.1)将多个源文件目录写到一个变量,然后再利用Makefile的Shell函数将所有源文件目录下源文件取出。参考如下代码: DIR_SRC=./src0 ....Makefile是根据依赖项是否被修改决定是否重新执行command。如果不把头文件写入依赖项中,则面临的风险就是修改了头文件,目标文件不会被重新编译。...7.9MakefilePHONY关键字的作用 PHONY的用法: .PHONY Target1 Target2 PHONY的作用: 指明Target是伪目标,并不会真正生成Target目标文件。...如: .PHONY : clean clean: rm -f *.out *.o 这样执行make clean会无视clean文件存在与否,或者是否是最新的。...[5]Makefile中的shell语法 [6]多个文件目录下Makefile的写法 [7]MakefilePHONY的相关介绍 [8]Makefile中关于all和.PHONY .

3.9K53

【手把手系列】:芯片设计中的Makefile简明教程

Makefile可以做什么? Makefile可以根据指定的依赖规则和文件是否修改来执行命令。常用来编译软件源代码,只需要重新编译修改过的文件,使得编译速度大大加快。...tb.sv和dut.v是依赖,执行命令前会先检查tb.sv和dut.v是否存在,以及是否修改。...伪目标 有时候目标并不是真实要生成的文件,比如我们要用Makefile调用simv来仿真,并不存在一个叫做sim的目标文件,这种情况我们称之为伪目标PHONY。...由于伪目标总是不存在,所以命令也一定会重新执行,即使simv没有修改。 我们常常在Makefile的开头来用.PHONY显式指明伪目标。...在Makefile中有几个特殊变量,如@表示目标,^表示依赖。

1.7K40

芯片设计中的Makefile简明教程

Makefile可以做什么? Makefile可以根据指定的依赖规则和文件是否修改来执行命令。常用来编译软件源代码,只需要重新编译修改过的文件,使得编译速度大大加快。...tb.sv和dut.v是依赖,执行命令前会先检查tb.sv和dut.v是否存在,以及是否修改。...伪目标 有时候目标并不是真实要生成的文件,比如我们要用Makefile调用simv来仿真,并不存在一个目标文件,这种情况我们称之为伪目标PHONY。 示例二: sim: simv ....由于伪目标总是不存在,所以命令也一定会重新执行,即使simv没有修改。 我们常常在Makefile的开头来用.PHONY显式指明伪目标。...在Makefile中有几个特殊变量,如$@表示目标,$^表示依赖。

1.9K50

golang工程通用构建方式

,例如:golang的版本,是否安装了revive代码静态扫描工具,是否安装了符合条件的docker版本等等; 跨平台支持以符合团队成员的各种开发环境; 编译过程中自动的将git的commit/branch...等工具来支持上述的诉求: bash脚本跨平台不友好; bazel不好用我也不无脑粉google神教; maven/gradle的golang插件对没有java经验的团队成员学习成本高; 跟随社区大流,使用gnu...但是Makefile的编写同样不小的学习成本,因此,在这里我将经过多个大小工程的全套Makefile分享给大家。...主Makefile文件 根目录下Makefile内容如下: .PHONY: all all: lint test build # ===================================.... .PHONY: help help: Makefile @echo -e "\nUsage: make ...

2.1K61

真香,我用Makefile做Flutter项目的自动化管理

!那就是Makefile! 这Makefile允许我们在一个文件中创建一组不同的命令来自动化我们的工作流程。...在GNU 手册上对make清晰的支出了 Makefile 的目的: “The make utility automatically determines which pieces of a large...由于我们只是在_运行命令_,我们应该告诉Makefile不会生成与target名称相同的文件。 这样我们就需要在文件顶部添加了一个.PHONY标志,在其中声明所有_不_生成同名文件的target。...要了解更多关于phony target在其中声明所有_不_生成同名文件的,您可以查看GNU手册phony target .PHONY: clean format clean: @echo "...让我们首先将这些目标添加到Makefile: .PHONY: clean format upgrade build_dev_mobile run_unit # Other targets run_unit

75020

【Linux】自动化构建工具-makeMakefile详解(6)

一.make/Makefile背景简介 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile...make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命 令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。...结论: make指令会根据源文件和目标文件的新旧,判定是否需要重新执行依赖关系进行编译 在任何操作中,一定是先有源文件(.c),才有可执行程序(.exe) 一般而言,可执行程序的时间一定比源文件更加新...如果我们更改了源文件,此时源文件就比可执行程序要更加新,此时执行make就可以实现;反之则会出现"is up to date"的反馈 五. 【.PHONY】与伪目标的应用 引入:而我们需要怎么样才能够让...使用【.PHONY】修饰mycode,令其成为伪目标目标的特性是,总是被执行的; 常规应用: 【.PHONY】修饰clean,让clean对应的依赖方法每次都被执行 六.特殊符号【$@】【$^

21510

快速上手makefile自动化构建工具

make是一个命令工具,是一个解释makefile的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Linux下GNU的make。...file.c:这里是依赖关系列表,可以多个文件。...其实也是有的,这里就需要补充一点新的语法: .PHONY:目标文件#修饰目标文件,使之成为伪目标,总是被执行   可以看到,加上 .PHONY 修饰之后,我们make就可以多次使用了,其实修饰伪目标就是...而我们一般遵循着伪目标修饰清理工作,编译工作还是交给编译器的选择,以时间的更新来判断执不执行make,但是 清理工作是一定要执行 的,所以我们 通常把.PHONY修饰需要清理的目标文件。...测试是否是自底向上执行依赖方法: ✈️ 总结:  makefile一个重要概念——依赖关系和依赖方法,依赖关系又有目标文件和依赖关系列表。

9610

跟我一起写Makefile

这个示例来源于gnu的make使用手册,在这个示例中,我们的工程8个c文件,和3个头文件,我们要写一个makefile来告诉make命令如何编译和链接这几个文件。...上面文件内容中,“.PHONY”表示,clean是个伪目标文件。 关于更为详细的“隐晦规则”和“伪目标文件”,我会在后续给你一一道来。...Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。 显式规则。显式规则说明了,如何生成一个或多个目标文件。...在这三个文件名中,最好使用“Makefile”这个文件名,因为,这个文件名第一个字符为大写,这样一种显目的感觉。最好不要用 “GNUmakefile”,这个文件是GNU的make识别的。...在这里提这个事,只是为了告诉大家,也许有时候你的Makefile出现了怪事,那么你可以看看当前环境中有没有定义这个变量。

1K70

全网最牛Linux内核Makefile系统文件详解(纯文字代码)

好,言归正传,GNU的make许多的内容,闲言少叙,还是让我们开始吧。...当然,为了避免和文件重名的这种情况,我们可以使用一个特殊的标记“.PHONY”来显示地指明一个目标是“伪目标”,向make说明,不管是否有这个文件,这个目标就是“伪目标”。....PHONY : clean 只要有这个声明,不管是否“clean”文件,要运行“clean”这个目标,只有“make clean”这样。...也就达到了我们一口气生成多个目标的目的。“.PHONY : all”声明了“all”这个目标为“伪目标”。 随便提一句,从上面的例子我们可以看出,目标也可以成为依赖。所以,伪目标同样也可以成为依赖。...六、多目标 Makefile的规则中的目标可以不止一个,其支持多目标,可能我们的多个目标同时依赖于一个文件,并且其生成的命令大体类似。于是我们就能把其合并起来。

3.1K20
领券