linux平台Makefile样例
来源:互联网 发布:网络搬砖是什么意思 编辑:程序博客网 时间:2024/05/29 18:55
EXEDIR=./bin
ifneq ($(EXEDIR), $(wildcard $(EXEDIR)))
$(shell mkdir $(EXEDIR))
endif
#输出文件名
NAME=$(EXEDIR)/libMtest.so
#当前目录编译
TOPDIR=.
#所有要编译的源文件
SOURCE:=$(shell find $(TOPDIR) -name '*.c') $(shell find $(TOPDIR) -name '*.cpp')
#所有编译后生成的目标文件
OBJS:=$(patsubst %.cpp,%.o,$(patsubst %.c,%.o,$(SOURCE)))
#编译器版本
VERSION=--version
#头文件包含路径
SEARCHDIR=$(addprefix -I,/usr/java/jdk1.6.0_38/include /usr/java/jdk1.6.0_38/include/linux)
#编译选项
CFLAG=-D_LINUX_ -c $(SEARCHDIR)
#要链接库文件搜索路径
LIBDIR=/mnt/hgfs/Mtest/linux/
#要链接本地库文件
LIBLOCALFILE=$(addprefix $(LIBDIR), Mtest.a)
#要链接系统库文件
LIBSYSFILE=$(addprefix -l, pthread)
#链接库文件选项
LIBFLAG=$(LIBLOCALFILE) $(LIBSYSFILE)
#生成动态库链接选项
LDLLFLAG=-fPIC -shared
#编译警告(-Werror) (-Wall)
WALLINFO=-O2
#编译标准:-std=c89
#预编译选项:-E
#汇编选项:-S
#addprefix:添加前缀
#wildcard:通配符拓展
#notdir:取消路径
#patsubst:通配符替换
#$(addprefix src/,foo bar):在foo bar目录前添加"src/"路径
#src=$(wildcard *.c ./sub/*.c):表当前目录下所有.c文件的替换
#dir=$(notdir $(src)):去除路径
#obj=$(patsubst %.c,%.o,$(SOURCE) ):将SOURCE中所有.c结尾的替换为.o
#ff=$(filter %.c %.s,$(SOURCE)):返回SOURCE中所有以.c和.s结尾的字符串
#off=$(filter-out %.c %.s,$(SOURCE)):返回SOURCE中除以.c和.s结尾的字符串
#strip:去空格函数
#subst:字符串替换函数
#编译器
#COMPILER=gcc
#jni Dll c++版本采用g++编译
COMPILER=g++
LINK: COMPILE
$(COMPILER) $(LDLLFLAG) $(OBJS) -o $(NAME) $(LIBFLAG)
@#cp -f $(NAME) ../Mtest/linuxbin
#编译命令
COMPILE :
@$(COMPILER) $(VERSION)
$(COMPILER) $(WALLINFO) $(COMPILESTANDAR) $(CFLAG) $(SOURCE)
#清除命令
clean:
@rm -f $(OBJS)
ifneq ($(EXEDIR), $(wildcard $(EXEDIR)))
$(shell mkdir $(EXEDIR))
endif
#输出文件名
NAME=$(EXEDIR)/libMtest.so
#当前目录编译
TOPDIR=.
#所有要编译的源文件
SOURCE:=$(shell find $(TOPDIR) -name '*.c') $(shell find $(TOPDIR) -name '*.cpp')
#所有编译后生成的目标文件
OBJS:=$(patsubst %.cpp,%.o,$(patsubst %.c,%.o,$(SOURCE)))
#编译器版本
VERSION=--version
#头文件包含路径
SEARCHDIR=$(addprefix -I,/usr/java/jdk1.6.0_38/include /usr/java/jdk1.6.0_38/include/linux)
#编译选项
CFLAG=-D_LINUX_ -c $(SEARCHDIR)
#要链接库文件搜索路径
LIBDIR=/mnt/hgfs/Mtest/linux/
#要链接本地库文件
LIBLOCALFILE=$(addprefix $(LIBDIR), Mtest.a)
#要链接系统库文件
LIBSYSFILE=$(addprefix -l, pthread)
#链接库文件选项
LIBFLAG=$(LIBLOCALFILE) $(LIBSYSFILE)
#生成动态库链接选项
LDLLFLAG=-fPIC -shared
#编译警告(-Werror) (-Wall)
WALLINFO=-O2
#编译标准:-std=c89
COMPILESTANDAR=-std=c99
#编译64位程序
PLATFORM=-m64
#预编译选项:-E
#汇编选项:-S
#addprefix:添加前缀
#wildcard:通配符拓展
#notdir:取消路径
#patsubst:通配符替换
#$(addprefix src/,foo bar):在foo bar目录前添加"src/"路径
#src=$(wildcard *.c ./sub/*.c):表当前目录下所有.c文件的替换
#dir=$(notdir $(src)):去除路径
#obj=$(patsubst %.c,%.o,$(SOURCE) ):将SOURCE中所有.c结尾的替换为.o
#ff=$(filter %.c %.s,$(SOURCE)):返回SOURCE中所有以.c和.s结尾的字符串
#off=$(filter-out %.c %.s,$(SOURCE)):返回SOURCE中除以.c和.s结尾的字符串
#strip:去空格函数
#subst:字符串替换函数
#编译器
#COMPILER=gcc
#jni Dll c++版本采用g++编译
COMPILER=g++
LINK: COMPILE
$(COMPILER) $(LDLLFLAG) $(OBJS) -o $(NAME) $(LIBFLAG)
@#cp -f $(NAME) ../Mtest/linuxbin
#编译命令
COMPILE :
@$(COMPILER) $(VERSION)
$(COMPILER) $(WALLINFO) $(COMPILESTANDAR) $(CFLAG) $(SOURCE)
#清除命令
clean:
@rm -f $(OBJS)
0 0
- linux平台Makefile样例
- Linux平台makefile文件编写基础
- Linux平台Makefile文件的编写
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇
- 【转贴】Linux平台Makefile文件的编写基础
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇
- Linux平台Makefile文件的编写基础篇 (转载)
- Linux平台Makefile文件的编写基础篇
- Unix/Linux 平台Makefile文件的基础编写
- Linux平台Makefile文件的编写基础篇
- 工作笔记:ffmpeg ios 打包 所有架构包括 arm64
- μC/OSIII——任务同步和通信(二)
- 画笔使用过程
- php webservice client
- VisualVM——JDK自带的性能分析工具
- linux平台Makefile样例
- hdu 5020 求3点共线的组合数
- WebGL增加顶点颜色
- Android 开发 之 JNI入门 - NDK从入门到精通Android 开发 之 JNI入门 - NDK从入门到精通
- C语言知识点
- UVA - 11997(优先队列)
- 第8周项目1-求简单分段函数的值
- 寻找和为定值的两个数/多个数
- zoj 2412 搜索