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

Makefile自动变量

是在Makefile中预定义的一些变量,用于简化和优化Makefile的编写和维护。这些变量会根据不同的上下文自动地获取相应的值,无需手动定义和赋值。

常见的Makefile自动变量包括:

  1. $@:表示目标文件的名称。在规则中,$@代表规则中的目标文件名。
  2. $<:表示第一个依赖文件的名称。在规则中,$<代表规则中的第一个依赖文件名。
  3. $^:表示所有依赖文件的列表,以空格分隔。在规则中,$^代表规则中的所有依赖文件名。
  4. $:表示与目标文件相对应的源文件名(不包含后缀)。在规则中,$代表规则中的目标文件名去掉后缀。
  5. $?:表示比目标文件新的依赖文件列表,以空格分隔。在规则中,$?代表规则中比目标文件新的依赖文件名。

Makefile自动变量的使用可以简化规则的编写,提高Makefile的可读性和可维护性。以下是一个示例:

代码语言:txt
复制
# 假设有两个源文件:main.c和utils.c,目标文件为main.o和utils.o

# 编译规则
%.o: %.c
    gcc -c $< -o $@

# 链接规则
app: main.o utils.o
    gcc $^ -o $@

# 清理规则
clean:
    rm -f *.o app

在上述示例中,使用了$@、$<、$^等自动变量来代表目标文件、依赖文件等,使得规则的编写更加简洁和易懂。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云产品:https://cloud.tencent.com/product
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ai
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iotexplorer
  • 移动应用托管服务(Serverless Cloud Function):https://cloud.tencent.com/product/scf
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Makefile经典教程(掌握这些足够)

makefile很重要       什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。因为,makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

02

什么是makefile(3)

六、另类风格的makefile 即然我们的make可以自动推导命令,那么我看到那堆[.o]和[.h]的依赖就有点不爽,那么多的重复的[.h],能不能把其收拢起来,好吧,没有问题,这个对于make来说很容易,谁叫它提供了自动推导命令和文件的功能呢?来看看最新风格的makefile吧。 objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o edit : $(objects) cc -o edit $(objects) $(objects) : defs.h kbd.o command.o files.o : command.h display.o insert.o search.o files.o : buffer.h .PHONY : clean clean : rm edit $(objects) 这种风格,让我们的makefile变得很简单,但我们的文件依赖关系就显得有点凌乱了。鱼和熊掌不可兼得。还看你的喜好了。我是不喜欢这种风格的,一是文件的依赖关系看不清楚,二是如果文件一多,要加入几个新的.o文件,那就理不清楚了。

02
领券