首页
学习
活动
专区
工具
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.3K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

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

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

    19810

    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 是一个后缀名。

    9.1K10

    如何使用Makefile在Ubuntu上自动执行重复任务

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

    2.4K00

    深度刨析makefile

    前言 我们在 Windows 下开发,或者初学 Linux 的时候,可能几乎没有接触过 makefile ,甚至都不知道 makefile 是什么,这是因为在 Windows 下各种各样的集成开发工具,...二、makefile 是怎么工作的 1. makefile 的三要素及命名 首先,makefile 中有三要素:目标(要生成什么)、依赖(用什么去生成)、和命令(如何去生成),这三个要素组成一个规则。....INTERMEDIATE: 这个特殊目标的依赖文件在 make 执行时被作为中间文件对待。没有任何依赖文件的这个目标没有意义。 .SECONDARY: 这个特殊目标的依赖文件被作为中过程的文件对待。....SILENT: 出现在此目标 “.SILENT” 的依赖文件列表中的文件,make 在创建这些文件时,不打印出此文件所执行的命令。同样,给目标 “SILENT” 指定命令行是没有意义的。...(2)makefile 的出错控制函数 在 makefile 中有两个函数 error 和 warning 可以控制 make 运行过程中的出错处理。

    13210

    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种为汇编代码编译规则。

    3.2K11

    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选项 上面两个脚本中有不少相同的函数,为方便维护,在实际工程中,我是把它合并放在一个库文件中的,本文为了让每个脚本都能独立运行,才特别将公用函数分别复制到每个脚本中。

    2.1K70

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

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

    2.8K20

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

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

    4.3K20

    Linux 开发 | 学习 Makefile

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

    5.4K10

    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 文件,我们都要给他写一条规则,如果有很多怎么办?难道要一条一条的写吗?

    43310

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

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

    2.2K20

    字符串匹配算法知多少?

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

    31910

    【makefile】

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

    2K00
    领券