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

生成一些但不是所有.o文件的Makefile

Makefile是一种用于自动化构建和管理软件项目的文件。它包含了一系列规则和指令,用于描述源代码文件之间的依赖关系和构建过程。

Makefile的主要作用是根据源代码文件的修改时间和依赖关系,判断哪些文件需要重新编译,并自动执行编译命令生成目标文件。在生成目标文件的过程中,Makefile可以指定编译器、编译选项、链接选项等参数,以及生成的目标文件的存放位置。

对于生成一些但不是所有.o文件的Makefile,可以按照以下步骤进行配置:

  1. 定义变量:可以使用变量来存储编译器、编译选项、目标文件等信息,方便后续的维护和修改。
  2. 定义规则:使用规则来描述源文件和目标文件之间的依赖关系,并指定生成目标文件的命令。
  3. 编写规则:对于每个源文件,可以编写对应的规则来生成目标文件。规则的格式通常为:目标文件: 依赖文件 编译命令。
  4. 添加伪目标:可以添加一些伪目标,如clean、install等,用于执行清理操作或安装操作。

下面是一个示例的Makefile,用于生成一些但不是所有.o文件:

代码语言:txt
复制
# 定义变量
CC = gcc
CFLAGS = -Wall -O2

# 定义规则
all: target1 target2

# 编写规则
target1: source1.c
    $(CC) $(CFLAGS) -c $< -o $@

target2: source2.c
    $(CC) $(CFLAGS) -c $< -o $@

# 添加伪目标
clean:
    rm -f target1 target2

.PHONY: all clean

在上述示例中,CC变量定义了编译器为gcc,CFLAGS变量定义了编译选项为-Wall -O2。all规则指定了生成target1和target2目标文件。target1规则和target2规则分别指定了生成目标文件的命令,使用了变量$<表示依赖文件,$@表示目标文件。

如果需要生成更多的目标文件,可以按照类似的方式添加规则。如果需要添加其他操作,可以在Makefile中添加相应的规则和命令。

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

  • 云服务器(ECS):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):https://cloud.tencent.com/product/cdb
  • 云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iothub
  • 移动推送服务(信鸽):https://cloud.tencent.com/product/tpns
  • 对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯区块链服务(TBaaS):https://cloud.tencent.com/product/tbaas
  • 腾讯云元宇宙(Tencent Cloud Metaverse):https://cloud.tencent.com/solution/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

删除指定文件夹及其子文件夹中所有文件保留文件

excelperfect 标签:VBA 经常要整理电脑中文件,特别是每当要自查电脑文件时。每次都是将一个一个文件夹打开,将其中文件全部删除,但要保留文件夹,以便于后面再陆续存放新文件。...手动操作起来每繁琐,特别是当文件夹及其子文件夹很多且里面的文件也较多时。 其实,这样工作使用VBA来很好解决。...下面的程序会删除指定文件夹中所有文件,包括其子文件夹中文件,但会保留文件夹,即保留文件夹框架,以便再往里面存放新文件。...Sub KillFiles(strPath As String, Optional blnRecursive As Boolean) ' 本过程返回目录中所有文件到Dictionary对象中....' 如果递归调用则同时返回子文件夹中所有文件.

46210
  • Linux CC++工程中可生成ELF、动静态库文件通用Makefile

    最近写了一个*nix环境下Makefile文件,支持编译C/C++,同时能够通过参数配置生成ELF目标文件、动态链接库(.so)和静态链接库(.a)文件。...1 Makefile文件配置说明 首先,根据生成目标文件类型(ELF可执行文件,动态链接库文件或静态链接库文件),配置GEN_LIBS、GEN_DYN_LIB、EXCUTE_BIN、STATIC_LIBS...其次,如果生成目标文件依赖其它库文件,那么只要将LD_LIB_DIR设置成该动态库所在目录,LD_LIBS设置成要链接动态库文件名即可。...同样,更建议在工程配置文件中配置,例如: export PROJECT_DIR=/home/typecodes 2 使用方法 在配置好Makefile文件变量对应值后,直接将该文件放置在需要编译...执行完make命令后,在当前目录下会生成.o目标文件以及.d依赖文件,ELF可执行文件放在工程bin目录下,动/静态库文件放在工程lib目录下。

    33710

    Linux CC++工程中可生成 ELF、动静态库文件通用 Makefile(二)

    今天对之前写 Linux C/C++工程中可生成ELF、动/静态库文件通用Makefile - TypeCodes 文章里面的 Makefile 进行了优化,增加了在当前目录生成单个可执行文件功能...1 功能说明 之前已有的功能不再赘述,这次主要是在包含多个 cpp 文件项目中生成一个可执行文件(之前只能一个 cpp 或者 c 文件生成对应一个可执行文件)。...如上图所示,我一个 myRedisSentinel 目录中包含了多个 cpp 文件,然后只要在 SINGLE_BIN 里面配置想要输出可执行文件名称,最后执行 make -j4 命令即可生成。...2 附录:Makefile 文件源码 已将下面的 Makefile文件托管到 github仓库中: 1、GitHub: https://github.com/vfhky/General_Makefile...o))) CUR_OBJ := $(strip $(CUR_CPP:.cpp=.o) $(CUR_C:.c=.o)) #CUR_DEP := $(addprefix $(PRG_BIN_DIR

    10910

    Linux CC++工程中可生成 ELF、动静态库文件通用 Makefile(二)

    今天对之前写 Linux C/C++工程中可生成ELF、动/静态库文件通用Makefile - TypeCodes 文章里面的 Makefile 进行了优化,增加了在当前目录生成单个可执行文件功能...1 功能说明 之前已有的功能不再赘述,这次主要是在包含多个 cpp 文件项目中生成一个可执行文件(之前只能一个 cpp 或者 c 文件生成对应一个可执行文件)。...如上图所示,我一个 myRedisSentinel 目录中包含了多个 cpp 文件,然后只要在 SINGLE_BIN 里面配置想要输出可执行文件名称,最后执行 make -j4 命令即可生成。...2 附录:Makefile 文件源码 已将下面的 Makefile文件托管到 github仓库中: 1、GitHub: https://github.com/vfhky/General_Makefile...o))) CUR_OBJ := $(strip $(CUR_CPP:.cpp=.o) $(CUR_C:.c=.o)) #CUR_DEP := $(addprefix $(PRG_BIN_DIR

    10110

    makefile 基础、进阶及常用 makefile

    命令:通过执行该命令由依赖文件生成目标 makefile 工作原理 1、若想生成目标,检查规则中依赖条件是否存在,如不存在,则寻找是否有规则用来生成该依赖文件 2、检查规则中目标是否需要更新,必须先检查它所有依赖...而有些时候你会发现,这样编译带来问题是如果我只改动了其中一个文件代码,执行这个编译语法时候,会重新编译所有的代码,小工程也就算了,如果是个大项目那肯定会很慢,所以这不是上上之选。...想自动化实现这个步骤,如果你自己写脚本,你是不是应该考虑,有多少个 .c 文件生成多少个 .o 文件,而且每个 .o 文件名字都与 .c 一样,所以我们可以获取一份 .c 文件列表,根据这份列表把所有后缀改为...我们也可以添加一些自定义变量,让以后 makefile 维护起来更方便: # 获取所有 .c 文件列表赋值给 src 变量 src = $(wildcard *.c) # 根据 src 变量获取 ....) app 我们在生成 .o 文件时增加了 -Wall 和 -g 参数,这样我们就可以看到编译时是不是有警告信息了,因为我这个项目没有引入头文件告诉编译器去哪里找实现函数,所以就会出现一些警告信息,当然我们目的并不是要处理这些警告

    40610

    【Linux必备工具】自动化构建工具makefile使用详解

    例如:上面的gcc test -o test.c 2.2.4 伪目标 伪目标:伪目标是指在 Makefile 中.PHONY定义不对应实际文件目标,通常用于执行一些特定操作,比如清理临时文件...如果test所依赖test.o文件不存在,那么make会在当前文件中找目标为test.o文件依赖性,如果找到则再根据那一个规则生成test.o文件。...注意:make 默认只生成一个可执行程序 3.1 make/Makefile识别文件新旧 make命令不是每次都会重新编译,只有更改过文件才会重新编译。...【通俗一点说】:.PHONY 修饰目标clean并不是某个依赖项生成实际文件,因此make命令不再去搜寻当前文件夹下是否有clean文件,这样少去做一些事,自然会改善性能,并且不用担心当前文件夹下是否有同名文件...Makefile小知识 4.1 替换 符号 含义 = 替换 %.o 任意.o文件 %.c 任意.c文件 4.2 通配符 符号 含义 $^ 所有依赖文件 $@ 所有目标文件 $< 所有依赖文件第一个文件

    14510

    自动生成Makefile全过程详解

    一、Makefile介绍 Makefile是用于自动编译和链接,一个工程有很多文件组成,每一个文件改变都会导致工程重新链接,但是不是所有文件都需要重新编译,Makefile中纪录有文件信息,在...Makefile基本结构不是很复杂,当一个程序开发人员开始写Makefile时,经常会怀疑自己写是否符合惯例,而且自己写 Makefile经常和自己开发环境相关联,当系统环境变量或路径发生了变化后...使用automake,程序开发人员只需要写一些 简单含有预定义宏文件,由autoconf根据一个宏文件生成configure,由automake根据另一个宏文件生成Makefile.in, 再使用configure...configure.in文件顺序并没有规定,但是你必须在所有最前 面和最后面分别加上AC_INIT宏和AC_OUTPUT宏。...7、 Makefile 在符合GNU Makefiel惯例Makefile中,包含了一些基本预先定义操作: make 根据Makefile编译源代码,连接,生成目标文件,可执行文件

    1.8K20

    手把手教你写一个 Makefile 文件

    可见,Makefile都成为了一种在工程方面的编译方法。当然,不同产商make各不相同,也有不同语法,其本质都是在 “文件依赖性” 上做文章。...【总结】:通过依赖(prerequisites)中一些文件生成目标(target)文件,目标文件要按照命令(command)中定义规则来生成。 2....在makefile文件最后可以看到有个clean,这个clean就是前面所说标签,它不是一个文件,所以make无法生成依赖关系和决定它是否要执行,只能通过显示指定这个目标才可以 ,通过make...,其它所有的 .o 文件本身也是一个目标,也需要编译生成,工程里面许多 .c 就会生成许多 .o,每一个 .c 都写一遍目标依赖命令显然是不可行,于是就有了类似for循环东西,把所有目标变成一个集合...,但不是真正用for循环,而是使用一些抽象符号表示,解释如下: %.o所有 .o 结尾文件 %.c:所有 .c 结尾文件 $@:表示目标文件 $<:表示第一个依赖文件,也叫初级依赖 $^:

    1.6K10

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

    显式规则说明了,如何生成一个或多目标文件。这是由Makefile书写者明显指出,要生成文件,文件依赖文件,生成命令。 2、隐晦规则。...但是在这里我还是建议不要使用这个环境变量,因为只要这个变量一被定义,那么当你使用make时,所有Makefile都会受到它影响,这绝不是你想看到。...3、初始化文件变量。 4、推导隐晦规则,并分析所有规则。 5、为所有的目标文件创建依赖关系链。 6、根据依赖关系,决定哪些目标要重新生成。 7、执行生成命令。...“伪目标”并不是一个文件,只是一个标签,由于“伪目标”不是文件,所以make无法生成依赖关系和决定它是否要执行。我们只有通过显示地指明这个“目标”才能让其生效。...一个示例就是,如果你Makefile需要一口气生成若干个可执行文件,你只想简单地敲一个make完事,并且,所有的目标文件都写在一个Makefile中,那么你可以使用“伪目标”这个特性: all :

    3.2K20

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

    但是在这里我还是建议不要使用这个环境变量,因为只要这个变量一被定义,那么当你使用make时,所有Makefile都会受到它影响,这绝不是你想看到。...“伪目标”并不是一个文件,只是一个标签,由于“伪目标”不是文件,所以make无法生成依赖关系和决定它是否要执行。我们只有通过显示地指明这个“目标”才能让其生效。...一个示例就是,如果你Makefile需要一口气生成若干个可执行文件你只想简单地敲一个make完事,并且,所有的目标文件都写在一个Makefile中,那么你可以使用“伪目标”这个特性:    all...例如有一个模式规则如下: %.o : %.c ; 其含义是,指出了怎么从所有的[.c]文件生成相应[.o]文件规则。...就目前而言,你还是应该不要尽量不要使用"-j"参数。 后序 —— 终于到写结束语时候了,以上基本上就是GNU makeMakefile所有细节了。

    2.7K20

    Linux makefile 教程 非常详细,且易懂

    但是在这里我还是建议不要使用这个环境变量,因为只要这个变量一被定义,那么当你使用make时,所有Makefile都会受到它影响,这绝不是你想看到。...“伪目标”并不是一个文件,只是一个标签,由于“伪目标”不是文件,所以make无法生成依赖关系和决定它是否要执行。我们只有通过显示地指明这个“目标”才能让其生效。...一个示例就是,如果你Makefile需要一口气生成若干个可执行文件你只想简单地敲一个make完事,并且,所有的目标文件都写在一个Makefile中,那么你可以使用“伪目标”这个特性: all :...例如有一个模式规则如下: %.o : %.c ; 其含义是,指出了怎么从所有的[.c]文件生成相应[.o]文件规则。...就目前而言,你还是应该不要尽量不要使用”-j”参数。 后序 —— 终于到写结束语时候了,以上基本上就是GNU makeMakefile所有细节了。

    4.3K20

    跟我一起写 Makefile(一)

    这就好像现在有这么多HTML编辑器,如果你想成为一个专业人士,你还是要了解HTML标识含义。...只要我们Makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前文件修改情况来确定哪些文件需要重编译,从而自己编译所需要文件和链接目标程序。...这样比较便于Makefile易读。我们可以把这个内容保存在文件为“Makefile”或“makefile文件中,然后在该目录下直接输入命令“make”就可以生成执行文件edit。...每一个 .o 文件都有一组依赖文件,而这些 .o 文件又是执行文件 edit 依赖文件。依赖关系实质上就是说明了目标文件是由哪些文件生成,换言之,目标文件是哪些文件更新。...这里要说明一点是,clean不是一个文件,它只不过是一个动作名字,有点像C语言中lable一样,其冒号后什么也没有,那么,make就不会自动去找文件依赖性,也就不会自动执行其后所定义命令。

    28410

    php autoconf 配置,automake,autoconf使用详解

    一.Makefile介绍 Makefile是用于自动编译和链接 ,一个工程有很多文件组成,每一个文件改变都会导致工程重新链接,但是不是 所有文件都需要重新编译,Makefile中纪录有文件信息...Makefile 基本结构不是 很复杂,当一个程序开发人员开始写Makefile时,经常会怀疑自己写 是 否符合惯例,而且自己写 Makefile经常和自己 开发环境相关联,当系统环境变量或路径发生了变化后...使用automake,程序开发人员只需要写一些简单 含有预定义宏 文件,由autoconf根据一个宏文件生成configure,由automake根据另一个宏文件生成Makefile.in,再使用configure.../depcomp’ automake会根据Makefile.am文件产生一些文件,包含最重要 Makefile.in. 6.执行configure生成Makefile $....Makefile 在 符合GNU Makefiel惯例 Makefile中,包含了一些基本 预先定义 操作: make 根据Makefile编译源代码,连接,生成目标文件,可执行文件. make

    74300

    makefile终极奥义

    (这有点像一个堆栈过程) 当然,你C文件和H文件是存在啦,于是make会生成 .o 文件,然后再用 .o 文件生成make终极任务,也就是执行文件 edit 了。...OBJ:=main.o #定义变量 #引用变量 ${OBJ} #使用变量 $(OBJ) #推荐使用 除了自己定义变量之外makefile还提供了预定义变量 在隐含规则中命令中,基本上都是使用了一些预先设置变量...会自动推导生成.o文件 除了通配符,makefile还提供了自动推导自动变量 自动变量 符号 含义 $@ 代表目标文件 $^ 代表所有依赖文件 $< 代表第一个依赖文件 由此第二个版本出来了 第二个版本...显式规则说明了如何生成一个或多个目标文件。这是由Makefile书写者明显指出要生成文件文件依赖文件生成命令。 隐晦规则。...各级子目录Makefile 「各级子目录Makefile」 这个是最简单,只需要obj-y+=将所有.o文件或者子级目录添加即可,例如 sub文件夹下 makefile obj-y += sub.o

    1.3K30

    Linux 下make命令与Makefile

    :非执行模式,输出所有执行命令,并不执行; -t:更新目标文件; -q:make操作将根据目标文件是否已经更新返回”0″或非”0″状态信息; -p:输出所有宏定义和目标文件描述; -d:Debug...例如,把.c文件编译成.o文件这一规则,你根本就不用写出来,make会自动推导出这种规则,并生成我们需要.o 文件。....o 目标的依赖目标会自动推导为.p ,并且其生成命令是 隐含规则使用变量 在隐含规则中命令中,基本上都是使用了一些预先设置变量。...例如有一个模式规则如下: %.o : %.c ; ; 其含义是,指出了怎么从所有的.c 文件生成相应.o 文件规则。...例如,如果一个目标是foo.a(bar.o),那么,%就是bar.o,@就是foo.a。如果目标不是函数库文件那么,其值为空。 •< : 依赖目标中第一个目标名字。

    10.2K20

    makefile文件编写「建议收藏」

    makefile文件用于管理和组织代码工程编译和链接,其不是可执行文件,其被make工具解析并完成相关动作,下面笔者将介绍makefile中常用一些语法说明: 1、文件包含: 语法:include...通常我们将一些配置选项分开成一个独立makefile文件,这样有利于makefile文件管理,或将模块代码依赖关系和需要编译文件信息独自写到一个 makefile文件中,最终通过include命令形成一个顶层...baz.o files = $(objects:.o=.c) 4、规则定义: 规则是makefile中最重要概念,其告诉make 目标文件依赖关系,以及如何生成及更新这些目标文件。...,这样当头文件信息改变后,make程序就知道如何更新目标文件了,而不是整个进行重编译,这个操作可以看出是非常消耗时间及傻瓜式,作为解决方案我们可以通过使用 编译器命令 –M选项来自动完成该工作,比如在...下面将介绍一些常见命令选项 -o file 输出生成 file文件 -c 编译或汇编程序文件,但不会执行链接操作 -T script 使用script脚本来分配内存

    2.9K10

    Linux中Makefile文件详解

    Makefile 解释 CC: 编译器变量,这里使用 gcc。 CFLAGS: 编译选项变量,这里设置了 -Wall(显示所有警告)和 -g(生成调试信息)。...TARGET: 目标文件变量,这里定义了最终生成可执行文件名字。 SRCS: 源文件变量,这里列出了所有的源文件。 OBJS: 中间文件变量,这里将源文件后缀由 .c 替换为 .o。...注意事项 空格问题: Makefile 使用 Tab 键而不是空格来缩进规则。 文件依赖: Makefile 核心是文件之间依赖关系,确保每个目标都依赖于正确文件。...自动变量 Makefile 中有一些特殊变量,称为自动变量,它们在规则命令中使用,表示一些特定信息。一些常用自动变量有: $@: 表示目标文件名字。...PHONY 目标 有时候,我们需要定义一些不产生实际文件目标,例如清理临时文件或执行一些特定任务。为了告诉 Make 这些目标不是文件名,可以使用 .PHONY 目标。

    94910
    领券