title: Makefile文件 文章目录 title: Makefile文件 Makefile文件 Makefile文件 make命令执行时,需要一个makefile文件,以告诉make命令需要怎么样的去编译和链接程序
(任意的shell命令) make工作 默认执行 make 命令时, GNU make在当前目录下依次搜索下面3个文件 "GNUmakefile", "makefile", "Makefile", 如果找到...,它会找文件中的第一个目标文件(target),并把这个文件作为最终的目标文件。...--no-builtin-rules 禁止使用任何隐含规则 -R --no-builtin-variabes 禁止使用任何作用于变量上的隐含规则 -B --always-make 假设所有目标都有更新..., 即强制重编译 注意 所有的命令前要用tab分割 变量 定义变量(= or := ) := 只能使用前面定义好的变量 = 可以使用后面定义的变量 OBJS = programA.o programB.o...OBJS-ADD = $(OBJS) programC.o # 或者 OBJS := programA.o programB.o OBJS-ADD := $(OBJS) programC.o 使用变量
Makefile包含 目标文件、依赖文件、可运行命令三部分。 ...每部分的基本格式例如以下: test: prog.o code.o gcc -o test prog.o code.o 当中,第一行的test是目标文件。...prog.o、code.o是依赖文件; 第二行的gcc -o test prog.o code.o是可运行命令。 整个Makefile文件都是这样的格式。...参考链接: https://blog.csdn.net/haoel/article/details/2886 Makefile 伪目标: https://www.cnblogs.com/hnrainll
python脚本提升工作效率,自动化执行,方便你我他 最近公司在进行应用拆分,将一个系统拆分为多个应用,但中间的过渡时间却是很难受的,即:修改了老项目,要把修改的代码复制到新系统里, 于是我准备开发一个脚本...,执行后会将配置的文件自动复制到新系统。...sourceFullPath, targetFullPath) print('COPY __',sourceFullPath,'__TO __',targetFullPath) shutil.copytree API的使用...另外这里记录一下 一般常用的python操作文件,文件夹的API #复制单个文件 shutil.copy("C:\\a\\1.txt","C:\\b") #复制并重命名新文件 shutil.copy("...C:\\a\\2.txt","C:\\b\\121.txt") #复制整个目录(备份) shutil.copytree("C:\\a","C:\\b\\new_a") #删除文件 os.unlink("
对文件的读取也是经常会遇到的操作,那么哪种方式效率更快呢,今天来做个测试。 首先能想到的就是,应该采用字节流对文件进行复制,文件可以是任何形式,如图片、视频、办公文档、压缩文件等等。...,并批量写入,可以看到,文件复制的效率提升非常明显。...3、不使用缓存,仅使用字节缓冲流拷贝文件 import java.io.FileInputStream; import java.io.FileOutputStream; public class CopyFile...,进一步提升了文件的读写效率,适当增大缓存数组,充分利用内存实现文件的极速复制。...总结: 文件复制的效率依次为: 字节流 < 缓冲流 < 缓存 < 缓冲流+缓存
在 Linux 中使用 make 命令来编译程序,特别是大程序;而 make 命令所执行的动作依赖于 Makefile 文件。...的使用 我参考 Linux 内核的 Makefile 编写了一个通用的 Makefile,它可以用来编译应用程序: ① 支持多个目录、多层目录、多个文件; ② 支持给所有文件设置编译选项; ③...3.1.3 通用 Makefile 的解析 ① 零星知识点 A. make 命令的使用: 执行 make 命令时,它会去当前目录下查找名为“Makefile”的文件,并根据它的指示去执行操作,生成第一个目标...我们可以使用“-f”选项指定文件,不再使用名为“Makefile”的文件,比如: make -f Makefile.build 我们可以使用“-C”选项指定目录,切换到其他目录里去,比如: make -...所以,不能采用‘’和圆括号的格式书写该变量,当然,如果需要使用非常量的文件名,可以在文件名中使用变量引用。
make程序需要一个编译规则说明文件,称为makefile,makefile文件中描述了整个软件工程的编译规则和各个文件之间的依赖关系。...make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说大多数编译器都有这个命令,使用make可以是重新编译的次数达到最小化。...makefile文件的规则可以非常复杂,比C程序还要复杂,平常使用实际用不了那么多 接下来,介绍它的使用方法: ?...该文件夹下含有很多个c文件,如果我们想要每个c文件生成对应的可执行文件,则需要在控制台敲编译命令很多次,而且每次重新编译都需要重新敲命令 第一种方法:在该文件夹下创建makefile文件,内容如下: #...$^表示冒号后得源文件 %:%.c gcc -o $@ $^ clean: rm -rf $(OBJECT) 使用通配符非常便利,可以识别文件夹下得目标文件名,按照我们写得规则
这是GNU make中老版本的特性,在新版本中,我们使用函数"dir"或"notdir"就可以做到了。"D"的含义就是Directory,就是目录,"F"的含义就是File,就是文件。...Makefile 简介 Makefile 是和 make 命令一起配合使用的....注释 :: Makefile只有行注释 "#", 如果要使用或者输出"#"字符, 需要进行转义, "\#" 1.2 GNU make 的工作方式 读入主Makefile (主Makefile...VPATH 使用方法: vpath :: 当前目录中找不到文件时, 就从中搜索 vpath 文件 TAGS 更新所有的目标, 以备完整地重编译使用 check 或 test 一般用来测试makefile的流程
前面写了一篇文章《Linux C/C++工程中可生成ELF、动/静态库文件的通用Makefile》,里面的Makefile代码有个不好的地方需要修改。...当编译.cpp文件时,使用的STD_OPT变量仍然是编译.c文件时的参数-std=c99,这个在C++中是不支持的。...1 sed命令的简要说明 由于sed命令可用的参数太多了,这里只列举脚本中用到的几个参数: 1 2 3 sed -i:直接修改文件而不是将处理的结果在屏幕上输出; sed -e:多个操作action按顺序执行...in ${ALL_MAKEFILE} do handle ${FILE} if [ $?...#echo "" | awk '{fflush()}' fi done 3 脚本执行结果 如上图所示,脚本不断遍历src目录下的Makefile文件,然后进行处理。
注意事项 空格问题: Makefile 使用 Tab 键而不是空格来缩进规则。 文件依赖: Makefile 的核心是文件之间的依赖关系,确保每个目标都依赖于正确的文件。...变量引用: 使用 @ 表示目标,^ 表示所有依赖文件, 通配符: 使用 % 通配符来表示一类文件,例如 %.o: %.c。 Makefile 是一个非常强大的工具,可以用于管理复杂的项目结构。...在规则的命令中使用时,用 (CC) 和 (CFLAGS) 替代具体的值。 9. include 指令 Makefile 可以包含其他 Makefile,使用 include 指令。...make 使用一个名为 Makefile 的文件,其中包含了一系列规则和指令,描述了文件之间的依赖关系以及如何生成目标文件。以下是一个简单的 Makefile 文件的结构和基本要素: 11....# 自动生成依赖关系 %.d: %.c $(CC) -M $ $@ 17. include 指令 使用 include 指令可以将其他 Makefile 文件包含进当前 Makefile
一、前言 linux环境下,当项目工程很大的时候,编译的过程很复杂,所以需要使用make工具,自动进行编译安装,但是手写makefile文件比较复杂,所幸在GNU的计划中,设计出了一种叫做Autoconf...利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以轻而易举的理顺各个源文件之间纷繁复杂的相互关系。...AC_OUTPUT(Makefile) (1)AC_PREREQ宏声明本文件要求的autoconf版本,本例使用的版本为2.63。...在使用Automake之前,要先手动建立Makefile.am文件。 Makefile.am是一种比Makefile更高层次的规则。...) 7.1 创建待编译的源码(模拟真实项目环境) 在第一章里简单介绍了使用automake自动产生makefile的几个关键步骤,所有文件都在同一个目录下。
主要含有一系列的规则,如下: X:Y (tab) 每个命令行前必须要有tab符号(如Makefile中书写方法) 上面的Makefile文件就是要编译出一个firstTest的可执行文件...Makefile写好后,在命令行直接键入make命令,就会执行Makefile中的内容了。此例子的话,最终会产生firstTest可执行文件。...中使用变量 OBJS = test1.o test2.o G = g++ CFLAGS = -Wall -O -g firstTest:$(OBJS) $(G) $(OBJS) -o firstTest...那就是要列出所有的.cpp文件。就好比你添加一个.cpp文件,就需要修改Makefile文件,这样子还是很麻烦的。...(3)使用函数 C = gcc G = g++ CFLAGS = -Wall -O -g TARGET = .
文件读写操作 我要将这张照片复制一份。...可以想我一样使用下面这个依赖。全部引入。
makefile文件由一组依赖关系和规则构成,每个依赖关系由一个目标和一组该目标所依赖的源文件组成,而规则描述了如何通过这些依赖文件创建目标,一般来说,目标是一个单独的可执行文件。...makefile文件 1.1 依赖关系 myapp: main.o 2.o 3.o main.o: main.c a.h 2.o: 2.c a.h b.h 3.o: 3.c b.h c.h 依赖关系定义了最终应用程序里的每个文件和源文件之间的关系... 如果想一次创建多个文件,可以利用伪目标all all: myapp myapp.1 建议约定:在自己的makefile文件中将第一个目标定为all,然后再列出其它重属目标 1.2...规则 makefile文件中一个非常奇怪而又令人遗憾的语法现象:空格和制表符是有区别的,规则所在的行必须以制表符开头,用空格是不行的,如果makefile文件中的某行以空格结尾,也可能导致make命令执行失败...文件中的宏 为了让makefile文件在面对大项目时不至于过于庞大和缺乏弹性,makefile文件允许使用宏以一种更通用的格式来书写它们 MACRONAME = value (MACRONAME
文件名 作用:将其它makefile文件包含进来,组成一个更大的makefile文件,这样有利于makefile模块化编程。...通常我们将一些配置选项分开成一个独立的makefile文件,这样有利于makefile文件的管理,或将模块代码的依赖关系和需要编译的文件信息独自写到一个 makefile文件中,最终通过include命令形成一个顶层...,这样当头文件信息改变后,make程序就知道如何更新目标文件了,而不是整个进行重编译,但这个操作可以看出是非常消耗时间及傻瓜式的,作为解决方案我们可以通过使用 编译器命令 –M选项来自动完成该工作,比如在...makefile文件中。...下面将介绍一些常见的命令选项 -o file 输出生成的 file文件 -c 编译或汇编程序文件,但不会执行链接操作 -T script 使用script脚本来分配内存
1 快速使用 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译...,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作 makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率...make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建 1.1 认识makefile makefile 可以实现自动化构建代码工程 首先 来认识一下make makefile...1.2 使用makefile 我们首先编写一个简单的makefile文件 我们使用make 命令来执行 然后我们就成果得到了可执行程序mytest,并可以成功执行。...再通过使用make clean命令 可以成功删除清理mytest. 2 深入理解 我们先以前两行讲解: 依赖方法前必须使用TAB进行开头,不能使用4个空格 make 命令会读取makefile的内容
,main.c需要使用另外3个文件中的函数,并且函数文件又用到了math库。...The Sin is: 0.50 The Cos is: 0.87 3 使用makefile 3.1 创建一个makefile vim makefile,文件并编辑如下: main: main.o...3.2 使用编解的makefile进行自动编译 编译器前先清除之前生成的文件,再使用make命令编译: rm -f main *.o make 此时已经生成生成完毕了。...里有两个目标:main与clean,使用make clean命令即可自动清除之前生成的文件,使用make main或make命令即可重新编译,也可以连起来使用make clean main命令实现先清除再编译...命令行中指定的CFLAGS优先级最高,然后是makefile文件中指明的CFLAGS,如果前两种都未指明CFLAGS,则使用shell默认的环境变量。
或者测试使用go run运行项目 go run main.go 我看有很多大型开源项目都是如下方式: make build 或者是这样 make install 我们打包运行这个过程,还有一个更加贴切的词语叫做构建项目...Makefile介绍 Makefile 是和 make 命令一起配合使用的。它是开源的构建工具,很多大型项目的编译都是通过 Makefile 来组织的。...就多了一个Makefile文件,如果要使用Makefile去构建你项目,就需要在你的项目里面新建这个Makefile文件。...这里我贴一个简单的Makefile文件的源码: BINARY_NAME=hello build: go build -o $(BINARY_NAME) -v ....,这就是这个target被调用时执行的脚本,这行就是build这个项目,编译后的二进制文件放在当前工程目录下,名字是变量BINARY_NAME的值 第四行,这一行就是直接执行当前目录下的二进制文件 注意
但是,我们在 Go 项目中也不需要完全摒弃使用 make 和 Makefile,可以使用 Makefile 的“伪目标”,简化使用 go 命令的复杂性,规范团队使用 go 命令的方式,提升个人或团队的生产力...02 make 和 Makefile make 命令行工具可以自动判断是否需要重新编译程序,实际上 make 不仅限于程序,我们可以使用它来描述任何任务,只要其他文件发生更改,某些文件就必须从其他文件自动更新...在使用 make 命令行工具之前,我们需要编写一个名为 Makefile 的文件,该文件描述程序中文件之前的关系,并提供用于更新每个文件的命令。也就是说 Makefile 决定 make 做什么。...03 Go 项目使用 Makefile 在 Go 项目中使用 Makefile,一般我们只会使用“伪目标”,我们使用 go build 构建可执行文件为例,介绍 Go 项目怎么使用 Makefile。...“目标”,必须查看 Makefile 文件吗?
多文件目录Makefile写法 1、前言 linux下程序开发,涉及到多个文件,多个目录,这时候编译文件的任务量比较大,需要写Makefile 2、简单测试 测试程序在同一个文件中,共有func.h...、func.c、main.c三个文件,Makefile写法如下所示: 1 CC = gcc 2 CFLAGS = -g -Wall 3 4 main:main.o func.o 5 $...3、通用模板 实际当中程序文件比较大,这时候对文件进行分类,分为头文件、源文件、目标文件、可执行文件。...也就是说通常将文件按照文件类型放在不同的目录当中,这个时候的Makefile需要统一管理这些文件,将生产的目标文件放在目标目录下,可执行文件放到可执行目录下。测试程序如下图所示: ?...附:我的makefile: ######################################## #makefile ####################################
领取专属 10元无门槛券
手把手带您无忧上云