1.makefile简单介绍:▶Windows系统里的Visualstudio/DevC++等IDE工具(IntegratedDevelopmentEnvironment)将C语言的预处理、编译、汇编、链接等过程集成在一起,而在Linux系统下需要编写GCC命令才能完成编译操作。当项目文件很多时,效率太低了。因此采用Makefile的方法实现编译的统一管理。2.makefile的规则目标:目标依赖[tab]键命令目标是最终想要的文件,一般为可执行文件;目标依赖是生成可执行文件所依赖的文件;命令一般为GCC命令、shell命令、链接命令、objcopy命令等。目标的概念解释默认目标当我们在mak
前言本文展示了一个比较完整的企业项目级别的Makefile文件,包括了:文件调用,源文件、头文件、库文件指定,软件版本号、宏定义,编译时间,自动目录等内容。1、目录架构本文中所采用的目录架构,在企业项目开发中十分常见:源文件都放在src目录中,头文件都放在inc目录中,并且这两个目录都可以有对应的子目录。库文件放在lib目录中,makefile相关文件放在build目录中,编程生成的程序放在自动生成的output目录中。目录结构展示如下:.├──build│ ├──Makefile│ └──srcpathconfig.mk├──code│ ├──inc│ │ ├──com│ │
前言本文展示了一个比较完整的企业项目级别的Makefile文件,包括了:文件调用,源文件、头文件、库文件指定,软件版本号、宏定义,编译时间,自动目录等内容。1、目录架构本文中所采用的目录架构,在企业项目开发中十分常见:源文件都放在src目录中,头文件都放在inc目录中,并且这两个目录都可以有对应的子目录。库文件放在lib目录中,makefile相关文件放在build目录中,编程生成的程序放在自动生成的output目录中。目录结构展示如下:.├──build│ ├──Makefile│ └──srcpathconfig.mk├──code│ ├──inc│ │ ├──com│ │
前言本文通过几个简单的示例,可以快速了解Makefile的基本使用方法,适用于编译我们平时练习所编写的小量代码。1.make命令Makefile文件内容:all为目标,这里没有依赖的文件,这条命令是打印(echo)出“HelloMakefile”这行文字all: echo"HelloMakefile"运行make后,终端打印的内容$makeecho"HelloMakefile"HelloMakefile可以看到,Makefile的命令也打印在了终端,要想不输出命令的内容,可以在命令前面加上@make可以指定要生成的目标,如果不指定,则默认第一个目标,我们将Makefile文件内容修改一下all
前言本文通过几个简单的示例,可以快速了解Makefile的基本使用方法,适用于编译我们平时练习所编写的小量代码。1.make命令Makefile文件内容:all为目标,这里没有依赖的文件,这条命令是打印(echo)出“HelloMakefile”这行文字all: echo"HelloMakefile"运行make后,终端打印的内容$makeecho"HelloMakefile"HelloMakefile可以看到,Makefile的命令也打印在了终端,要想不输出命令的内容,可以在命令前面加上@make可以指定要生成的目标,如果不指定,则默认第一个目标,我们将Makefile文件内容修改一下all
前言在上一篇文章中,尽管使用了变量和模式,但还是有不够好的地方,在Makefile中要指明每一个源文件,我们接下来利用函数对其进行优化,并介绍其他常用的一些函数。依旧是以fun.c,main.c和Makefile三个文件为例,文件内容就不再贴出来了,前两篇文章中都有。1.wildcard函数wildcard是通配符函数,通过它可以得到当前工作目录中满足_pattern模式的文件或目录名列表。格式为:$(wildcard_pattern).PHONY:all SRC=$(wildcard*.c)all: @echo$(SRC)运行makefun.cmain.c2.patsubst函数patsub
前言在上一篇文章中,尽管使用了变量和模式,但还是有不够好的地方,在Makefile中要指明每一个源文件,我们接下来利用函数对其进行优化,并介绍其他常用的一些函数。依旧是以fun.c,main.c和Makefile三个文件为例,文件内容就不再贴出来了,前两篇文章中都有。1.wildcard函数wildcard是通配符函数,通过它可以得到当前工作目录中满足_pattern模式的文件或目录名列表。格式为:$(wildcard_pattern).PHONY:all SRC=$(wildcard*.c)all: @echo$(SRC)运行makefun.cmain.c2.patsubst函数patsub
前言本文通过简单的几个示例,以及对同一个Makefile进行几个版本的迭代,帮助快速的理解变量和模式规则的使用。1、回顾在上一篇文章中,我们使用Makefile编译fun.c和main.c这两个文件,最终生成名为app的可执行文件。fun.c的内容#includevoidfun(){ printf("Thisisfun()!\n");}main.c的内容externvoidfun();intmain(){ fun(); return0;}第一版Makefile.PHONY:cleanall:main.ofun.o gcc-oappmain.ofun.omain.o:main.c gcc-oma
前言本文通过简单的几个示例,以及对同一个Makefile进行几个版本的迭代,帮助快速的理解变量和模式规则的使用。1、回顾在上一篇文章中,我们使用Makefile编译fun.c和main.c这两个文件,最终生成名为app的可执行文件。fun.c的内容#includevoidfun(){ printf("Thisisfun()!\n");}main.c的内容externvoidfun();intmain(){ fun(); return0;}第一版Makefile.PHONY:cleanall:main.ofun.o gcc-oappmain.ofun.omain.o:main.c gcc-oma
镜像下载、域名解析、时间同步请点击阿里云开源镜像站VS中有一键编译+自动运行,Linux也给我们提供了对应的编译方式,虽然不及VS那么便捷,但是相比于手动输入gcc-oaddadd.c,我们一句make就可以搞定Makefile是一个文件,能够存放上述gcc-oaddadd.c这种编译指令make是一个命令工具,能够解释Makefile中的指令要如何编译.c文件,关键就在于Makefile是怎么写的,下面我们主要介绍这两者的使用一、单个文件的编译假设我们要编译这么一个test.c文件,我们希望编译生成一个名为test的可执行文件file我们在test.c所在目录下创建一个Makefile文件,