首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
makefile编写---单个子目录编译自动变量模板ok
】的更多相关文章
makefile编写---单个子目录编译自动变量模板ok
1.自动化变量通配符http://blog.sina.com.cn/s/blog_7c95e5850101b38l.html 2.wildcard 使用http://blog.csdn.net/liangkaiming/article/details/6267357 3.srcs=(wildcard:%.o=%.c)说明 http://os.chinaunix.net/a2008/0312/978/000000978004.shtml 4.$(srcs):%.o:%.c说明==$(patsubs…
makefile编写---单个子目录编译模板
经过这次地库项目之后,虽然时间不久,跟团队在一起,虽然队员不一定在技术上有过人之处,但是来自大公司的员工,在工具使用和代码规范方面还是有点可鉴之处,在搭建主控模块是,就得面临makefile编写,因为所有的功能模块都得自己实现,所以使得我不得不熟练下makefile,至少在以后的项目中,能用上自己写的模板! 在默认的方式下,也就是我们只输入make命令.那么, 1.make会在当前目录下找名字叫“Makefile”或“makefile”的文件. 2.如果找到,它会找文件中的第一个目标文件(…
Makefile学习之通配符和自动变量
规则中的通配符 “*” ,“?” ,“ [...]”, " % " , " wildcard " 1.“*” *.c表示所有后缀为.C的文件: 如果文件中用到通配符,使用“\*”; 2.通配符在变量中的使用: objects=*.c 注意:这里的通配符就是用在变量中的,不过,objects的值就是“*.o”,并不会展开: 如果希望展开的话,可以这么使用: objects := $(wildcard *.o); wildcard是Makefile中的关键字: 3.M…
多文件Makefile编写
工作过程中,平时不怎么关注Makefile的书写规则,对于遇到的编译错误一般能看懂Makefile的基本规则也能解决.但如果想要编写Makefile文件还是有相当的难度的,更不用说包含多个目录和文件的功程了.于是在调试了一下午的情况下,终于把一个包含多个目录的基本Makefile给实现了,特此记录下来. 其实编写这个Makefile的目的很简单:便于集中分类管理平时的小程序. (文章不是用来描述Makefile规则) 1. Makefile多目录结构 在windows上可以使用tree命令查看目…
makefile编写--引用
1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂. Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力. 本篇博客是基于 {精华} 跟我一起写 Makefile 而整理的, 有些删减, 追加了一些示例. 非常感谢 gunguymadman…
Makefile之自动变量篇
自动变量假设您编写一个编译‘.c’文件生成‘.o’文件的规则:您怎样编写命令‘CC’,使它能够操作正确的文件名?您当然不能将文件名直接写进命令中,因为每次使用隐含规则操作的文件名都不一样. 您应该使用make的另一个特点,自动变量.这些变量在规则每次执行时都基于目标和依赖产生新值.例如您可以使用变量‘$@’代替目标文件名,变量‘$<’代替依赖文件名. 下面是自动变量列表: $@ 规则的目标文件名.如果目标是一个档案成员,则变量‘$@’ 档案文件的文件名.对于有多个目标的格式规则(参阅格式规则简介…
自动构建Makefile(1)--C/C++编译流程&Makefile规则简介
前言: 大家在Windows上使用VS构建C/C++程序时,不需要自己编辑略显晦涩的Makefile文件,而对于初学者而言, 他们甚至没意识到它的存在.VS是自动生成Makefile文件, 并构建工程项目的.不可否认Visual Studio做为一款全能的IDE,它帮开发者做了很多工作,也降低了C/C++的门槛,意义非常的重大. 但作为进阶的C/C++开发者, 你是有必须了解底层编译和链接原理的. 让我们来梳理下C/C++的编译链接过程,并回顾Makefile的编写规则,最后让我们来尝试实现…
makefile 分析 -- 内置变量及自动变量
makefile 分析1 -p 选项,可以打印出make过程中的数据库, 下面研究一下内置的变量和规则. -n 选项, 只运行,不执行, -d 选项,相当于--debug=a, b(basic),v(verbose),i(implicity),j(innvocation of command),m(remake files) 这里着重解释一下 -p make -p -f /dev/null 可以打印出内置变量和内置规则 变量可以分为3类, 第一类: 环境变量, 比较重要的是PATH, PW…
2.linux下Makefile编写规范
转自陈皓 (CSDN) 概述—— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力. 因为,makef…
makefile编写
概述 什么是makefile?或许非常多Winodws的程序猿都不知道这个东西,由于那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序猿,makefile还是要懂.这就好像如今有这么多的HTML的编辑器,但假设你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个側面说明了一个人是否具备完成大型工程的能力. 由于,makefile关系到了整个工程的编译…
Makefile编写 一 *****
编译:把高级语言书写的代码转换为机器可识别的机器指令.编译高级语言后生成的指令虽然可被机器识别,但是还不能被执行.编译时,编译器检查高级语言的语法.函数与变量的声明是否正确.只有所有的语法正确.相关变量定义正确编译器就可以编译出中间目标文件.通常,一个高级语言的源文件都可对应一个目标文件.目标文件在Linux中默认后缀为“.o”(如“foo.c”的目标文件为“foo.o”). 链接:将多.o文件,或者.o文件和库文件链接成为可被操作系统执行的可执行程序(Linux环境下,可执行文件的格式为“EL…
Make和Makefile编写(详见GCC手册)
Makefile和Make Rules 多模块软件.依赖树和Make 默认规则 Make使用程序对简单变量的支持 内建变量 虚目标 特殊目标 一般性语法错误及其纠正措施 命令行的使用和调试 Makefile中常用规则总结 make常用选项 -d 显示调试信息 -f 指定从哪个文件中读取依赖关系信息.默认文件是“Makefile”或“makefile” ,"-"表示从标准输入 -h 显示所有的Makefile的help信息 -n 打印所有Makefile执行命令,但不执行这些命令…
多文件目录下makefile文件递归执行编译所有c文件
首先说说本次嵌套执行makefile文件的目的:只需make根目录下的makefile文件,即可编译所有c文件,包括子目录下的. 意义:自动化编译行为,以后编译自己的c文件时可把这些makefile文件直接复制到相应目录即可方便编译出所有文件.这些makefile文件是通用的,只需根据自己的工程情况改动少许内容即可.下面会说. 总体思路是:把目标文件放在debug文件夹下的obj目录下,把最终的二进制文件放在debug文件夹下的bin目录下;如何递归编译所有除了debug目录下的makefile…
【转】多文件目录下makefile文件递归执行编译所有c文件
首先说说本次嵌套执行makefile文件的目的:只需make根目录下的makefile文件,即可编译所有c文件,包括子目录下的. 意义:自动化编译行为,以后编译自己的c文件时可把这些makefile文件直接复制到相应目录即可方便编译出所有文件.这些makefile文件是通用的,只需根据自己的工程情况改动少许内容即可.下面会说. 总体思路是:把目标文件放在debug文件夹下的obj目录下,把最终的二进制文件放在debug文件夹下的bin目录下;如何递归编译所有除了debug目录下的makefile…
vim+makefile入门编辑,编译,差错实例
vim+makefile入门编辑,编译,差错实例 vim makefile 编译 编写代码,一般在vim中编辑完后,输入:wq,在命令行下输入g++ hello.cc -o hello ,出现问题,打开vim,找到对应行修改,感觉是不是很烦很NC.其实vim自带的Quickfix列表就能帮助我们无需退出vim,即可进行编译代码,浏览错误信息. 简单单个文件的调试,只需增添环境变量makeprg即可. 编写一个简单的命名为hi.c的如下程序: #include<stdio.h> int mai…
Linux——makefile编写
以前对makefile的编写,限于刚开始接触,我都比较局限一些死板的格式,有时候就会显得有些繁琐.在进一步了解一些系统编译和链接的知识后,对makefile编写流程有了一些新的认识,所以来此梳理梳理,方便更灵活地编写makefile. 限于makefile认识不足,这里参考了一篇比较好博文:makefile 关于makefile makefile带来直接好处就是——“自动化编译”.一旦写好,只需要一个make命令,整个工程完全自动编译,所以十分方便.而Makefile文件就是告诉make命令怎么…
Windows 下的 Makefile 编写
Windows 下的 Makefile 编写(一)Makefile的基本规则 作者:cntrump Makefile对于很多人来说是陌生的,特别是习惯于使用 IDE 的人来说,似乎没有听说过 Makefile ,因为Makefile 的工作都由IDE代劳了.但是Makefile 的地位是不可忽略的,从VC诞生到现在Nmake这个实用程序就一直伴随着VC编译器一起发行. 很多大的工程都是基于Makefile编译和维护的,对于开源项目来说,大多数都使用Makefile进行编译,使用IDE来编译大型工…
单目录下多文件 makefile编写
makefile很久就接触过了,但是一直没怎么深入的去学习和总结:在项目中我也只是看看makefile或者修改部分语句,全部自己动手写的话还真没有:知识在于沉淀,这句说的非常好,所以现在把自己理解的东西,记录下来,以便后面查阅: 这篇blog要分享的是在单目录下多文件的makefile编写,首先说明当前目录下有多少文件:fun.h fun.c main.c makefile:其中*.c 文件都要依赖 *.h文件: 首先常规编译: 预处理期:gcc -E -o fun.i fun.c…
linux --> Makefile编写
Makefile编写 单目录 测试程序在同一个文件中,共有func.h.func.c.main.c三个文件,Makefile写法如下所示: CC = gcc CFLAGS = -g -Wall main:main.o func.o $(CC) main.o func.o -o main main.o:main.c $(CC) $(CFLAGS) -c main.c -o main.o func.o:func.c $(CC) $(CFLAGS) -c func.c -o func.o clean:…
如何将多个C文件链接在一起----Makefile编写及make指令
需使用GCC编译器,关于MinGW的安装指南:https://people.eng.unimelb.edu.au/ammoffat/teaching/20005/Install-MinGW.pdf 单个.c文件且没有使用自定义头文件的编译,在命令行: • gcc -o programName program.c -o后紧跟生成程序名 其余常用选项: -Wall 显示全部警告信息 -g 产生带调试信息的编译后目标代码,供调试器(如gdb使用) -c 仅编译 或 • m…
GNU的make命令、makefile编写
makefile简介 makefile可实现工程的自动化编译,只需一个make命令即可一键完成.makefile定义了一些规则,指定哪些文件需要先编译.后编译.重新编译等. 一般的C或者C++程序,都需要先编译成中间文件,windows下为.obj文件,UNIX下为.o文件,这个过程称为编译(compile). 每个原文件都应该对应一个中间文件(.obj文件或者.o文件),把大量的中间文件合成执行文件的过程,称为链接(Link):链接时,主要是链接函数和变量,即可以使用.obj文件或者.o文件链…
静态局部变量、静态全局变量、extern全局变量、自动变量 札记
静态局部变量 静态局部变量. 从称呼上我们可以看出,静态局部变量首先是一个局部变量,因此其只在定义它的函数内有效,冠以静态的头衔后,其生存期就被延长了,不会随着函数的返回而被撤销.我们可以这样来理解:静态局部变量就是在程序生存期间一直有效,但只能在定义它的函数中使用的一种变量. 静态局部变量的声明比较简单,在声明局部变量的时候,加上关键字static就可以了.下面是一个用局部静态变量计算阶乘的具体例子. #include “stdio.h” int fac(int n) { static int…
block捕获自动变量和对象
一.捕获自动变量值 首先看一个经典block面试题: int val = 10; void (^blk)(void) = ^{printf("val=%d\n",val);}; val = 2; blk(); 上面这段代码,输出值是:val = 10.而不是2. block 在实现时就会对它引用到的它所在方法中定义的栈变量进行一次只读拷贝,然后在 block 块内使用该只读拷贝:换句话说block截获自动变量的瞬时值:或者block捕获的是自动变量的副本.(我更喜欢这么理解:block…
linux 下C语言编程库文件处理与Makefile编写
做开发快3年了,在linux下编译安装软件算是家常便饭了.就拿gcc来说,都有不下10次了,可基本每次都会碰到些奇奇怪怪的问题.看来还是像vs.codeblocks这样的ide把人弄蠢了.便下定决心一定要好好学习下如何在linux下纯手工gcc编译c项目.今天学了2点,一个是库文件处理,另一个是makefile编写. 学习的系统是centos6.6,编译升级的gcc4.8.2,明天写个博客总结下这回gcc安装的过程,每次都能学到些东西. gcc的编译过程 首先需要清楚gcc编译做了些什么 源文件…
多目录下多文件 makefile编写
前面已经分享了单目录项下多文件的makefile的编写,现在来看看多目录下多文件makefile的编写: 在做项目时,一般文件都会分几个目录来存放:基本的是 include/ bin/ src/ obj/ lib/ tools/,这几个文件:我先说下我的文件存放目录,用ls -R可以查看到所有文件:./include/common.h ./src/main.c ./src/printStatus.c 就三个文件,其中*.c 文件都依赖于 *.h文件: 同样的先上第一版makef…
[动态库]动态库生成和使用以及Makefile编写
转自:https://www.cnblogs.com/ljtknowns/p/5647793.html 文件目录结构如下 1 dynamiclibapp.c 2 Makefile 3 comm/inc/apue.h 4 comm/errorhandle.c 5 dynamiclib/Makefile 6 dynamiclib/dynamiclib_add.c 7 dynamiclib/dynamiclib_mul.c 8 dynamiclib/inc/dynamiclibs.h 9 dynami…
make的自动变量和预定义变量
make的自动变量 $@ 规则目标的文件名.如果目标是档案文件的一个成员,"$@"就是档案文件的名称 $% 当目标是档案文件的一个成员时,"$%"是该成员的名称.否则"$%"为空$< 第一个依赖文件的名称$? 以空格隔开的比目标新的所有依赖文件名.若依赖文件是档案文件的成员,只使用成员的名称$^ 以空格隔开的所有依赖文件名.若依赖文件是档案文件的成员,只使用成员名称.无论一个依赖文件出现过多少次,"$^"值中只包含其名称…
Makefile编写 二
变量 1. Makefile中变量和函数的展开(除规则命令行中的变量和函数以外),是在make读取makefile文件时进行的,包括“define”定义的变量. 2. 变量可以用来代表一个文件名列表.编译选项列表.程序运行的选项参数列表.搜索源文件的目录列表.编译输出的目录列表等. 3. 变量名是不包括“:”.“#”.“=”.前置空白和尾空白的任何字符串. 4. 变量名是大小写敏感的.推荐的做法是:在对于内部定义定义的一般变量使用小写方式,而对于一些参数列表(例如:编译选项CFLAGS)采用大写…
Makefile 编写 tips
1.变量赋值 VARIABLE = value #在执行时扩展,允许递归扩展 VARIABLE := value #在定义时扩展 VARIABLE ?= value #只有在该变量为空时才设置该值 VARIABLE += value #将值追加到变量尾端 2.自动变量 $@指代当前目标,就是Make命令当前构建的那个目标.比如,make foo的$@就指代foo $<指代第一个前置目标,比如规则为 t : p1 p2,那么$<就指代p1 $?指代比目标更新的所有前置条件,之间用空格分隔,比如规…
Yocto开发笔记之《Makefile编写》(QQ交流群:519230208)
开了一个交流群,欢迎爱好者和开发者一起交流,转载请注明出处. QQ群:519230208,为避免广告骚扰,申请时请注明 “开发者” 字样 ======================================================== automake和autoconf 生成大型项目的makefile编写 http://blog.csdn.net/fuli1215/article/details/6399175 使用GNU Autoconf/Automake创建Makefile…