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

make:*没有设置target为` `obj/main.o‘的规则。停

make是一个流行的自动化构建工具,用于编译和构建软件项目。它通常用于处理大型项目,可以帮助开发人员自动化构建过程中的编译、链接和测试等任务。make可以根据项目中的规则和依赖关系自动决定需要重新编译的文件,并生成相应的目标文件。

make可以通过编写Makefile来定义项目的规则和依赖关系。Makefile是一个文本文件,其中包含一系列规则,每个规则定义了目标文件、依赖文件和生成目标文件的命令。

在使用make时,常见的命令有:

  • make:根据Makefile执行默认规则,通常是构建项目的主目标。
  • make clean:清除生成的目标文件和临时文件。
  • make install:将编译生成的文件安装到指定目录。
  • make uninstall:从系统中卸载已安装的文件。

make的优势包括:

  • 自动化构建:make可以根据文件的依赖关系自动决定需要重新构建的文件,提高了开发效率。
  • 灵活性:通过编写Makefile,开发人员可以灵活地定义项目的构建规则,满足不同项目的需求。
  • 并行构建:make可以根据依赖关系并行构建多个目标文件,提高构建速度。

make在软件开发过程中有广泛的应用场景,包括:

  • 编译程序:make可以自动编译源代码,并生成可执行文件或库文件。
  • 构建项目:make可以管理项目中的多个模块,根据模块之间的依赖关系自动构建整个项目。
  • 单元测试:make可以用于自动化运行单元测试,确保代码质量和功能正确性。
  • 持续集成:make可以与持续集成工具集成,实现自动化构建和测试。

腾讯云提供了一系列与make相关的产品和服务,如:

  • 云托管(Serverless Framework):提供基于函数计算和事件驱动的无服务器应用框架,支持自动化构建和部署。
  • 云原生应用引擎(Cloud-Native Application Engine):提供自动化构建、部署和管理云原生应用的全托管平台。
  • 云开发(Tencent Cloud Base):提供端到端的云端开发平台,包括代码管理、构建、测试和部署等功能。

你可以通过以下链接了解更多关于腾讯云相关产品的详细信息:

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

相关·内容

换个角度说Makefile

我们发现会报错,因为你要依赖文件找不到,而且也没有其他规则能够生成它。...CFLAGS=-g -Wall 设置链接库 我们这里只用到了libm.so库 LIBS=-lm 编译 我们目标文件是main.o依赖main.c,该规则应该是这样OBJ=main.o $(OBJ...TARGET=main $(target):main.o $(CC) $(CFLAGS) -o $(TARGET) $(OBJ) $(LIBS) 而为了使用make clean,即通常用于清除这些中间文件...这里目标文件main依赖main.o,它开始会去找main.o,发现这个文件也没有,就会看是不是有规则会生成main.o,欸,你还别说,真有。...构建C/C++项目的makefile做了什么 makefile主要做下面的事情(以C程序例) 用变量保存各种设置项,例如编译选项,编译器,宏,包含头文件等 把.c编译成.o 把.o与库进行链接 清除生成文件

75020

6_Makefile与GCC

再次使用make编译器会返回,可执行程序最新结果,我们依旧修改一下add.c,然后在编译,如下: $ make gcc -c add.c gcc -o output main.o add.o sub.o...02 OBJ += sub.o ​ 这样结果是OBJ:”main.o,add.o,sub.o“。...​ 2)$<:规则第一个依赖文件 ​ 3)$^:规则所有依赖文件 ​ 我们上面的例子继续完善,修改为采用自动变量格式,如下: 01 CC = gcc 02 OBJ = main.o add.o...6.5.4 模式规则 ​ 模式规则实在目标及依赖中使用%来匹配对应文件,我们依旧使用上面的例子,采用模式规则格式,如下: 01 CC = gcc 02 OBJ = main.o add.o sub.o.../src/100.o ​ 其中,这条规则表示:把变量中所有后缀.c文件替换为.o。 命令执行完,OBJ变量值:./src/ask.o .

3.6K10

Makefile 使用(在 Linux 中使用 make 命令来编译程序)

这时我们需要把“clean”这个目标,设置“假想目标”,这样可以确保执行“make clean”时那些删除命令肯定可以得到执行。...在 Makefile.build 中设置编译规则,有 3 条编译规则: i. 怎么编译子目录?...(target)通常是要生成文件名称,可以是可执行文件或 OBJ 文件,也可以是一个执行动作名称,诸如clean。...开始时这两个文件还没有生成,在执行生成 test 命令之前先将 main.o、sub.o 作为目标查找到合适规则,以生成 main.o、sub.o。...④ 第 7、8 行就是用来生成 main.o、sub.o 规则: 对于 main.o 这个规则就是: main.o:main.c gcc -c -o main.o main.c 对于 sub.o 这个规则就是

8.9K10

手把手教你写一个 Makefile 文件

-o main main.o openFile.o readFile.o writeFile.o # 生成main规则 main.o:main.c # mian.o文件生成所需要mian.c...编写完成后,执行make命令,make会在当前目录下找到名字Makefile或makefile文件,程序就会自动运行,产生相应中间文件和可执行文件 a....如果执行make出现如下信息,那就是你代码没有修改过,Makefile拒绝你请求: 这里还会有一种情况就是如果只修改过其中一个文件,那么重新编译就可以看到只编译修改那个文件,没有编译其他未修改文件...,省略版和基础版结果是一样,省略版makefile中去掉了生成main.o、openFile.o、readFile.o和writeFile.o这些目标的依赖和生成命令,这就是make隐含规则make...执行make结果: make执行后bin目录里面已经生成了可执行文件main,obj目录里面已经生成了中间目标文件 main.o、openFile.o、readFile.o、writeFile.o

1.5K10

Linux中Makefile文件详解

Makefile 解释 CC: 编译器变量,这里使用 gcc。 CFLAGS: 编译选项变量,这里设置了 -Wall(显示所有警告)和 -g(生成调试信息)。...all: 默认目标,执行 make 命令时将会构建该目标。 $(TARGET): 目标文件生成规则,告诉 Make 如何生成最终可执行文件。...$(OBJS): 中间文件生成规则,告诉 Make 如何生成中间目标文件。 %.o: %.c: 通用规则,告诉 Make 如何将 .c 文件编译成对应 .o 文件。...clean: 清理规则,执行 make clean 时将删除生成可执行文件和中间目标文件。 3. 使用 Makefile 在项目目录中,执行以下命令: 构建项目: makemake all。...默认规则 第一个规则通常是默认规则,即在执行 make 命令时默认执行规则。在上述例子中,默认规则是 all: target1 target2。 15.

87510

Linux Make(Makefile)由浅入深学习与示例剖析

如果您写程序没有用到make工具,则说明您写程序仅仅是个人练习小程序,称不上有实用价值程序,因此我们必须学习、掌握并灵活运用它。...通常是程序中间体或最后所需要生成文件名,如 *.o或obj可执行文件名称。此外,target目标也可以是make执行动作名称,如clean等 dependency-file:规则依赖。...一个目标可以没有依赖而只有动作,即只有命令,如clean。此目标只有命令,没有依赖,主要作用是用来删除make过程中产生中间文件(*.o),做收尾清理工作。...sub_float.o make: $(OBJ) $(CC) -o main $(OBJ) main.o: add.h sub.h add_int.o: add.h add_float.o...makefile缺省规则如下: ..c.o: gcc -c $< 这个规则表示,所有的 *.o 目标文件都是依赖于相应 *.c 源文件, 例如 main.o 依赖于 main.c 。

1.8K20

图解嵌入式系统开发之Makefile篇

使用“更高级”Makefile编译 TARGET := app $(TARGET): main.o cmd.o gcc -o $@ $^ main.o: main.c cmd.o: cmd.c...因为该依赖关系中只是 列出来了.c依赖,没有描述对头文件依赖,任何一个头文件更改都需要重新编译所有文件。...头文件,假设该宏一开始没有定义,其生成cmd.d依赖文件如下。...主Makefile: 主Makefile一般在源码根目录下, 是执行Make命令读取第一个Makefile文件,该文件中定义了最终产物名字,源文件子目录,启动递归编译,合成最终产物规则,clean...如下: obj-y := main.o obj-y += cmd/ Makefile.build递归到该目录时候首先包含了该目录下Makefile文件,然后读取obj-y值,读到obj-y中 main.o

1.3K40

CC++之makefile写法

make会比较targets文件和prerequisites文件修改日期,如果prerequisites文件日期要比targets文件日期要新,或者target不存在的话,那么,make就会执行后续定义命令...如果目标文件所依赖.o文件也存在,那么make会在当前文件中找目标.o文件依赖性,如果找到则再根据那一个规则生成.o文件。...而且如果我们修改是calc.h文件,make就无法察觉到变化了(所以有必要为头文件专门设置一个常量,并将其加入到依赖关系表中)。下面,我们来想一想如何解决这个问题。...,我们已经有了一个不错makefile,至少用来维护这个小型工程是没有什么问题了。...例如,如果我们想增加自动清理编译结果功能就可以为其定义一个带伪目标的规则; cc = gcc prom = calc deps = calc.h obj = main.o getch.o getop.o

88520

跟我一起写Makefile

我们规则是: 1)如果这个工程没有编译过,那么我们所有c文件都要编译并被链接。 2)如果这个工程某几个c文件被修改,那么我们只编译被修改c文件,并链接目标程序。...makefile规则 在讲述这个makefile之前,还是让我们先来粗略地看一看makefile规则target ... : prerequisites ......如果edit所依赖.o文件也不存在,那么make会在当前文件中找目标.o文件依赖性,如果找到则再根据那一个规则生成.o文件。...比如,我们声明任意一变量名,叫objects, OBJECTS, objs, OBJS, obj, 或OBJ,只要能够表示obj文件即可。...推导隐晦规则,并分析所有规则所有的目标文件创建依赖关系链。 根据依赖关系,决定哪些目标要重新生成。 执行生成命令。 1-5步第一个阶段,6-7第二个阶段。

1K70

makefile 基础、进阶及常用 makefile

先来分析一下,我们把手动执行编译过程逆向思考一下,想生成目标可执行 app 文件,需要依赖 4 个 .o 文件支持,main.o add.o sub.o mul.o。...执行 make 命令后,可以达到同样效果。 makefile 模式规则 再分析一下上面的 makefile 代码,对于每个要生成 .o 文件,我们都要给他写一条规则,如果有很多怎么办?...其执行流程是要生成最终目标 app,app 需要 4 个 .o 文件支持,这 4 个文件我们用了一个变量 obj 来表示。...当去找 main.o 文件时,发现没有,则去下面找是否有匹配生成这个 .o 文件规则,因为 %.o 可以匹配 main.o,所以找到了下面这条规则: %.o:%.c gcc -c $< -o...$@ 规则 %.c % 值,取决于目标 %.o,而此时 %.o 中 % 值是上面生成 app 所需 main.o,所以解释以后代码相当于下面这样: main.o:main.c gcc

36210

跟我一起写Makefile:MakeFile介绍

我们规则是: 1)如果这个工程没有编译过,那么我们所有c文件都要编译并被链接。 2)如果这个工程某几个c文件被修改,那么我们只编译被修改c文件,并链接目标程序。...makefile规则 在讲述这个makefile之前,还是让我们先来粗略地看一看makefile规则target ... : prerequisites ......如果edit所依赖.o文件也不存在,那么make会在当前文件中找目标.o文件依赖性,如果找到则再根据那一个规则生成.o文件。...比如,我们声明任意一变量名,叫objects, OBJECTS, objs, OBJS, obj, 或OBJ,只要能够表示obj文件即可。...推导隐晦规则,并分析所有规则所有的目标文件创建依赖关系链。 根据依赖关系,决定哪些目标要重新生成。 执行生成命令。 1-5步第一个阶段,6-7第二个阶段。

99220

Makefile总结

Makefile是一个规定了怎么去编译和链接程序脚本文件,在执行make命令时会执行该文件,window环境下IDE,如visual studio已经集成了该功能,不需要关心程序编译规则,在linux...进行修改: CC = g++ BIN = helloworld OBJ = main.o test.o $(BIN): $(OBJ) $(CC) $(OBJ) -o $(BIN) main.o...clean: rm $(OBJ) $(BIN) 特殊变量: $@ 目标文件 $^ 依赖项列表 $< 依赖项列表第一项 通过make -p可以查看很多自定义变量,如CC(默认值cc),RM...(默认值rm -f) 可对上述Makefile再进行修改: CC=g++ BIN=helloworld OBJ=main.o test.o $(BIN):$(OBJ) $(CC)...并没有执行删除操作。 这种情况可以使用伪目标来解决,可避免在makefile中定义执行命令目标和当前目录下实际文件名冲突。 一旦定义伪目标,make执行规则不会去查找隐含规则,同样也提高了效率。

95710

Linux — Makefile学习笔记以及多级目录下Makefile编写

二、Make程序中有许多选项,其中最常用3个选项: 1、-k:作用是在让make命令在发现错误时仍然就执行,而不是在检测到第一个错误时就停止,所以可是使用这个选项在一次操作中发下所有未编译成功源文件...OBJ := add.o sub.o main.o #声明依赖文件 TOPDIR := $(PWD) #声明顶级目录 OBJDIR := $(TOPDIR)/obj #定义编译中间文件存放目录 BINDIR...-p (SUBDIR) (BINDIR) 对于makedir中选项: -m 对新建目录设置存取权限。...clean: 关于clean规则,在make clean时候,并不产生目标文件,且没有依赖文件,所以命令都会执行,但如果目录中存在名为“clean”文件或者目录,则规则没有依赖文件...此main文件并非此工程以及Makefile需要依赖文件,在本人在测试阶段手动编译生成可执行文件main,由于疏忽没有删掉。后续操作中可以忽略此文件。

5.3K10

跟我一起写 Makefile(二)

2、如果找到,它会找文件中第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终目标文件。    ...4、如果edit所依赖.o文件也存在,那么make会在当前文件中找目标.o文件依赖性,如果找到则再根据那一个规则生成.o文件。...通过上述分析,我们知道,像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义命令将不会被自动执行,不过,我们可以显示要make执行。...比如,我们声明一个变量,叫objects, OBJECTS, objs, OBJS, obj, 或是 OBJ,反正不管什么啦,只要能够表示obj文件就行了。...六、另类风格makefile 即然我们make可以自动推导命令,那么我看到那堆[.o]和[.h]依赖就有点不爽,那么多重复[.h],能不能把其收拢起来,好吧,没有问题,这个对于make来说很容易

21730
领券