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

用python写makefile

其实之前我一直很懒,我不想了解makefile规则,因为linux下开发我一直使用Qt creator。...因此很多开发者都会选择Windows下开发C/C++程序,然后部署Linux下执行。当然我也不例外。所以最近花了几个晚上了解makefile的编写规则。...(技术支持:www.guimigame.com) # @FILENAME 执行脚本输出makefile文件名 # @BIN 生成可执行文件名 # @SUFFIX 源文件后缀 # @ROOTPATH...最终for val in OBJ2SRC:遍历所有的数据;列出所有的源文件(.cpp)生成所对应的目标文件(.o),将编译规则写进makefile。 ? 这是我要编译的工程,当然截图只是其中一部分。...有人可能会说为什么不写一个测试例子。其实我想说,很多时候要弄懂一些技术,动手去做也许是最好的方法。如果你有什么问题,欢迎与我讨论!

6.2K40
您找到你想要的搜索结果了吗?
是的
没有找到

芯片开发最常用的Makefile语法和功能

管理依赖关系:Makefile 可以指定源文件和目标文件之间的依赖关系。这使 make 工具能够确定哪些文件需要重新编译,从而优化编译过程并节省时间。...链接目标文件:Makefile 可以指定要链接的目标文件、链接器和链接选项。这使芯片开发人员能够轻松地将多个目标文件链接到一个可执行文件或库。...通过变量赋值时结合使用 (nullstring) 和空格,可以确保空格被当作有效字符包含在变量值内,而不被当作无意义的行首空格处理掉。...= 可以通过terminal执行make指令时指定变量的值,如果我们就是使用的=对变量赋值,还能通过terminal对这个变量重新赋值?...中的函数 Makefile中有许多自带的函数供我们直接调用: subst函数 bar := ${subst not,totally, "I am not superman"} all: @echo

7810

Makefile 的使用

3.1 配套视频内容大纲 3.1.1 Makefile 规则与示例 参考文档:gunmake.htm ① 为什么需要 Makefile 怎么高效地编译程序? 想达到什么样的效果?... Makefile 中怎么放置第 1 个目标: 执行 make 命令时如果不指定目标,那么它默认是去生成第 1 个目标。 所以“第 1 个目标”,位置很重要。...有时候不太方便把第 1 个目标完整地放在文件前面,这时可以文件的前面直接放置目标,在后面再完善它的依赖与命令。...假想目标: 我们的 Makefile 中有这样的目标: clean: rm -f $(shell find -name "*.o") rm -f $(TARGET) 如果当前目录下恰好有名为“clean...(5)$(addsuffix suffix,names…) 参数names...是一系列的文件名,文件名之间用空格隔开;suffix 是一个后缀名。

4.3K42

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

3.1 配套视频内容大纲 3.1.1 Makefile 规则与示例 参考文档:gunmake.htm ① 为什么需要 Makefile 怎么高效地编译程序? 想达到什么样的效果?... Makefile 中怎么放置第 1 个目标: 执行 make 命令时如果不指定目标,那么它默认是去生成第 1 个目标。 所以“第 1 个目标”,位置很重要。...有时候不太方便把第 1 个目标完整地放在文件前面,这时可以文件的前面直接放置目标,在后面再完善它的依赖与命令。...假想目标: 我们的 Makefile 中有这样的目标: clean: rm -f $(shell find -name "*.o") rm -f $(TARGET) 如果当前目录下恰好有名为“clean...(5)$(addsuffix suffix,names…) 参数names...是一系列的文件名,文件名之间用空格隔开;suffix 是一个后缀名。

8.6K10

如何使用MakefileUbuntu上自动执行重复任务

因此,我们应该将Makefile放在我们将要执行的任务的根目录中,或者调用我们将要编写的脚本最有意义的地方。 Makefile中,我们遵循特定的格式。...您可以指定要在目标下运行的任何命令。您可以根据需要添加任意数量的命令。 命令目标声明后的行上指定。它们由一个制表符缩进。...我们的例子中,如果在我们的目录中有“file.jpg”,我们可以调用make这样构建一个名为“file.png”的文件: make file.png Make将在.SUFFIXES声明中看到png文件...创建一些Targets 我们现在在Makefile中有很多,但我们还没有任何正常的目标。...虽然某些情况下编写一个简单的脚本可能更容易,但Makefile流程之间建立结构化的层次关系的简单方法。学习如何利用这个工具可以帮助简化重复性任务。

2.3K00

makefile文件编写「建议收藏」

2、变量定义: 语法:变量名 := 变量值 makefile中,经常先定义一个变量,然后往该变量中追加新的值(通过+=符号),比如先定义一个C_SRCS变量(该值可以为空),然后将代码文件test1....c和test2.c添加到C_SRCS中,其代码如下所示: C_SRCS := C_SRCS += test1.c test2.c makefile中有一类特殊的变量,其名称为 自动变量,自动变量的值会依据规则中的...、sort、word、wordlist、words、firstword、lastword;文件名处理函数dir、notdir、suffix、basename、addsuffix、addprefix、join...makefile文件规则有2种,一种是显式规则,另一种是隐式规则。...makefile中,我们通常要编写3种隐式规则,第1种为代码链接规则,第2种为源代码编译规则,第3种为汇编代码编译规则。

2.2K10

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

这是一个“修养”(呵呵,还记得我的《编程修养》)。...Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标什么。...当然,“伪目标”的取名不能和文件名重名,不然其就失去了“伪目标”的意义了。...二、变量中的变量 定义变量的值时,我们可以使用其它变量来构造变量的值,Makefile中有两种方式来在用变量定义变量的值。...其隐含规则中并没有意义。 4、模式的匹配 一般来说,一个目标的模式有一个有前缀或是后缀的"%",或是没有前后缀,直接就是一个"%"。

2.6K20

linux下boost编译安装全过程脚本塈bzip2编译安装全过程脚本

=$BZIP2_FOLDER/Makefile # 使用sed编译器修改Makefile,在编译选项中增加-fPIC参数 # 判断CFLAGS中是否已经有-fPIC选项,如果没有就添加,没有则不修改 if...in $bzip2_makefile" sed -i -r 's/(^\s*CFLAGS\s*=)(.*$)/\1-fPIC \2/' $bzip2_makefile exit_on_error...安装路径 install_folder=$(dirname $(readlink -f $0))/release/$(install_suffix bzip2) echo install_folder:....CFLAGS定义中增加-fPIC选项,如下: CFLAGS=-fPIC -Wall -Winline -O2 -g $(BIGFILES) 否则编译boost时会报错,在下载bzip2源码的脚本中有相关的代码用于自动...CFLAGS定义中增加-fPIC选项 上面两个脚本中有不少相同的函数,为方便维护,实际工程中,我是把它合并放在一个库文件中的,本文为了让每个脚本都能独立运行,才特别将公用函数分别复制到每个脚本中。

2K70

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

七、清空目标文件的规则 每个Makefile中都应该写一个清空目标文件(.o和执行文件)的规则,这不仅便于重编译,也很利于保持文件的清洁。这是一个“修养”(呵呵,还记得我的《编程修养》)。...Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标什么。...当然,“伪目标”的取名不能和文件名重名,不然其就失去了“伪目标”的意义了。...二、变量中的变量 定义变量的值时,我们可以使用其它变量来构造变量的值,Makefile中有两种方式来在用变量定义变量的值。...其隐含规则中并没有意义。 4、模式的匹配 一般来说,一个目标的模式有一个有前缀或是后缀的”%”,或是没有前后缀,直接就是一个”%”。

4.2K20

Linux 开发 | 学习 Makefile

---- Makefile概述 基本格式 基本上每一个 Makefile 主体就是由若干个以下规则模块组成 : 表明输出的目标,输出目标的依赖对象和生成目标需要执行的命令。...判断目标是否存在, 依赖的对象是否有更新 根据依赖关系一步一步追溯查找,建立依赖关系链,执行需要执行的命令,最终输出终极目标。 没有依赖链上的目标是不会被直接执行到的,比如 clean。...但是对于一个文件包含什么头文件,对应修改 Makefile,这样是很难维护的。 C/C++ 编译器 -MM 功能可以自动找寻文件的包含 ,生成依赖关系。...name.xxxx (Makefile中 $ 有特殊含义,如果要表示它的字面意思需要写两个 $,所以 Makefile 中的四个 $ 传给Shell变成两个 $,而两个 $ Shell中表示当前进程的...@ @echo 命令执行 如果 Make 执行时,带参数“-n”或“--just-print”,那么其只是显示命令,不会执行命令,这个功能有利于我们调试我们的 Makefile,看看我们书写的命令执行起来是什么样子的或是什么顺序的

5.3K10

makefile 基础、进阶及常用 makefile

,依赖中有任一个被更新,则目标必须更新 分析各个目标和依赖之间的关系 根据依赖关系自底向上执行命令 根据修改时间比目标新,确定更新 如果目标不依赖任何条件,则执行对应命令,以示更新 一个最简单的 makefile...mycode@vmware:~/Desktop/code/makefile$ tree . ├── add.c ├── main.c ├── makefile ├── mul.c └── sub.c 目录中有...makefile 自动变量 makefile 中有一些预定义的变量,你可以理解它像是 C 语言中的一些关键字,分别有不同的意义,我们列举几个常用的自动变量(其他还有很多),通过上面的 makefile...$@:命令中使用,表示规则中的目标 $<:命令中使用,表示规则中的第一个条件 $^:命令中使用,表示规则中的所有条件,组成一个列表,以空格隔开,如果这个列表中有重复的项则消除重复项。...makefile 模式规则 再分析一下上面的 makefile 代码,对于每个要生成的 .o 文件,我们都要给他写一条规则,如果有很多怎么办?难道要一条一条的写

31710

字符串的匹配算法_多字符串匹配

复杂度很高啊,但是实际开发中也是比较常用的。为什么呢? 真当天天都有成千上万个字符的主串让我们去匹配?一般都比较短,而且,统计意义上,算法执行效率不会真的到M*N的地步。...---- 编辑器中的全局替换方法:BM算法 用过?比方说要在我这篇博客里找出全部的“主串”这个词,有没有想过其底层的原理? 这是一个性能优于KMP的算法。...但是子串中找到了那个坏字符,那就将两个字符的位置对上。 模式串中有对应的坏字符时,让模式串中 最靠右 的对应字符与坏字符相对。...有些个特殊情况吧,它会导致不但不会向后滑动模式串,还有可能会倒推、 比如说主串:kkkkkkkkkkkkkkkkkk,模式串是 akk ---- 好后缀规则 如果模式串中存在已经匹配成功的好后缀,则把目标串与好后缀对齐...如果无法找到匹配好的后缀,找一个匹配的最长的前缀,让目标串与最长的前缀对齐: 如果完全不存在和好后缀匹配的子串,则右移整个模式串 ---- 代码实现 难顶,我一定会回来的 // a,b 表示主串和模式串

2.2K20

字符串匹配算法知多少?

复杂度很高啊,但是实际开发中也是比较常用的。为什么呢? 真当天天都有成千上万个字符的主串让我们去匹配?一般都比较短,而且,统计意义上,算法执行效率不会真的到M*N的地步。...---- 编辑器中的全局替换方法:BM算法 用过?比方说要在我这篇博客里找出全部的“主串”这个词,有没有想过其底层的原理? 这是一个性能优于KMP的算法。...但是子串中找到了那个坏字符,那就将两个字符的位置对上。 模式串中有对应的坏字符时,让模式串中 最靠右 的对应字符与坏字符相对。...有些个特殊情况吧,它会导致不但不会向后滑动模式串,还有可能会倒推、 比如说主串:kkkkkkkkkkkkkkkkkk,模式串是 akk ---- 好后缀规则 如果模式串中存在已经匹配成功的好后缀,则把目标串与好后缀对齐...如果无法找到匹配好的后缀,找一个匹配的最长的前缀,让目标串与最长的前缀对齐: 如果完全不存在和好后缀匹配的子串,则右移整个模式串 ---- 代码实现 难顶,我一定会回来的 // a,b 表示主串和模式串

29910

makefile

Makefile实际上是一个文件的依赖关系,也就是说, target这一个或多个的目标文件依赖于dependency中的文件,其生成规则定义命令command中。...如果依赖文件(dependency)中有一个以上的文件比目标(target)文件要新的话,shell命令(command)所定义的命令就会被执行。这就是Makefile的规则。...$@ ——表示规则中的目标文件集。模式规则中,如果有多个目标,那么," $@ " 就是匹配于目标中模式定义的集合。 $% ——仅当目标是函数库文件中,表示规则中的目标成员名。...$^ ——所有的依赖目标的集合,以空格分隔。如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。 $+ ——这个变量很像"$^",也是所有依赖目标的集合。...GNU make 支持两种类型的隐含规则: (1)后缀规则(Suffix Rule)。后缀规则是定义隐含规则的老风格方法。

1.9K00

自动生成Makefile的全过程详解

本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常 见的GNU程序一样,只要使用“....一、Makefile介绍 Makefile是用于自动编译和链接的,一个工程有很多文件组成,每一个文件的改变都会导致工程的重新链接,但是不是所有的文件都需要重新编译,Makefile中纪录有文件的信息,...Makefile.am中定义的宏和目标,会指导automake生成指定的代码。例如,宏bin_PROGRAMS将导致编译和连接的目标被生成。...你还可以试着使用一些其 他的make命令,如make clean,make install,make dist,看看它们会给你什么样的效果。感觉如何?...7、 Makefile 符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作: make 根据Makefile编译源代码,连接,生成目标文件,可执行文件。

1.7K20
领券