@rm -rf$(TARGET) 至此,一个通用的makefile完成了,如果增加源代码目录和头文件目录,只需要在INC变量和VPATH变量处加上此目录即可。中间object文件和文件的依赖关系自动生成。
Makefile 里的函数跟它的变量很相似——使用的时候,你用一个符号跟左圆括号,函数名,空格后跟一列由逗号分隔的参数,最后用右圆括号结束。例如,在GNUMake里有一个叫′wildcard′的函数,它有一个参数,功能是展开成一列所有符合由其参数描述的文件名,文件间以空格间隔。像这个命令:objects=符号跟左圆括号,函数名,...
在这个makefile中,首先定义了编译器和编译选项变量,分别表示使用gcc编译器和启用-Wall选项。然后通过wildcard函数和替换函数定义了源文件和目标文件变量,分别表示当前目录下的所有.c文件和对应的.o文件。接着定义了可执行文件名变量,表示最终生成的可执行文件名为program。 接下来定义了三个规则:all规则表示默认规则,编...
1、读入所有的Makefile。 2、读入被include的其它Makefile。 3、初始化文件中的变量。 4、推导隐晦规则,并分析所有规则。 5、为所有的目标文件创建依赖关系链。 6、根据依赖关系,决定哪些目标要重新生成。 7、执行生成命令。 对于我们这个makefile,其处理步骤是: 1) make看见sinclude $(SOURCES_CPP:.cpp=.d)和...
一个通用的makefile写法,自动推导文件的依赖关系,温习之用。 假设有两个头文件目录header1,header2;两个cpp文件目录,src1,src2,一个lib目录 写一个完整的makefile步骤如下:1定义可执行文件的名称 TARGET=MyPro 2指定此编译工程所要使用的头文件所在的目
linux编译多个源文件的程序比较麻烦,这下就需要通用的Makefile了,编译的时候执行一下make命令就OK,下面介绍通用makfile的写法。 假设现在有以下源文件:file1.h file1.c file2.h file2.c mainproc.c,程序的主函数在mainproc.c中。 ###通用Makefile模板### # 目标文件名字...
@$(MAKE) -C src/tch/ .PHONY : clean clean : $(RM) ${OUTPUTDIR}/*.o *.o ${PROGRAM} 子目录的Makefile: SOURCES := $(wildcard *.c) OBJECTS := ${SOURCES:%.c=%.o} VPATH = $(OUTPUTDIR) all : ${OBJECTS} %.o:%.c
前面的一篇文章Makefile之大型工程项目子目录Makefile的一种通用写法介绍了大型项目子目录Makefile的一种通用写法,然而最近在写Linux网络方面的demo,一个目录下有几个文件,如果手工输命令显得太不专业了。于是按该博文的方法改编了一下Makefile,也当学习之用。该Makefile适用于一个C文件生成一个可执行程序的场景,使用...
管理Linux环境下的C/C++大型项目,如果有一个智能的Build System会起到事半功倍的效果,本文描述Linux环境下大型工程项目子目录Makefile的一种通用写法,使用该方法,当该子目录内的文件有增删时无需对Makefile进行改动,可以说相当的智能。下面先贴代码(为减小篇幅,一些