Makefile 自动搜索 c 和 cpp 文件, 并生成 .a 静态库文件
最近 又弄linux 下的 .a 静态库编译, 于是想 做个 一劳永逸的Makefile, 经过一番折腾, 最后成功了
只需要 改两个 参数 就可以执行了(MYLIB 和 VPATH), 代码 如下:
PWD=$(shell pwd)
#INCS=-I$(PWD)/include # change to you project name
MYLIB = SQLiteCpp.a
# change to you project file dir
VPATH = include:src:sqlite3
# the obj dir
OBJDIR = obj ###########################################################################
# auth lzpong
# source files
SRCS = $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.cpp))
SRCSC = $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.c))
# obj files
OBJS_1 = $(addsuffix .o,$(basename $(SRCS)))
OBJSC_1 = $(addsuffix .o,$(basename $(SRCSC)))
OBJS = $(foreach n,$(notdir $(OBJS_1)),$(OBJDIR)/$(n))
OBJSC = $(foreach n,$(notdir $(OBJSC_1)),$(OBJDIR)/$(n))
# head files
HEADERS = $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.h))
HEADERS += $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.hpp))
HEADERS += $(foreach dir,$(subst :, ,$(VPATH)),$(wildcard $(dir)/*.inc)) CC = gcc
CXX = g++ -std=c++
INCS = $(patsubst %,-I%,$(subst :, ,$(VPATH)))
CFLAGS += $(INCS)
CXXFLAGS += $(INCS) LIBS += -lncurses -lesl -lpthread -lm
LDFLAGS += -L.
PICKY = -O2
#SOLINK = -shared -Xlinker -x #DEBUG = -g -ggdb
#LIBEDIT_DIR = ./ all: $(MYLIB) $(MYLIB): $(OBJS) $(SRCS) $(OBJSC) $(SRCSC) $(HEADERS)
ar rcs $(MYLIB) $(OBJS) $(OBJSC)
ranlib $(MYLIB) # *.cpp files commpare
$(OBJS): $(SRCS) $(HEADERS)
@test -d $(OBJDIR) | mkdir -p $(OBJDIR)
$(CXX) -c $(SRCS) $(INCS)
mv *.o $(OBJDIR)/ # *.c file commpare
$(OBJSC): $(SRCSC) $(HEADERS)
@test -d $(OBJDIR) | mkdir -p $(OBJDIR)
$(CC) -c $(SRCSC) $(INCS)
mv *.o $(OBJDIR)/ clean:
rm -rf $(OBJDIR)
rm -f *.o *.a
Makefile 自动搜索 c 和 cpp 文件, 并生成 .a 静态库文件的更多相关文章
- Makefile学习(二)----生成静态库文件
Lunix下编译静态库文件: .o后缀文件:编译生成的中间代码文件: .a后缀文件:静态库文件,编译的时候会合到可执行程序中,文件比较大: .so后缀文件:动态库文件,只是一个指向,不会合到可执行程序 ...
- Makefile 编译静态库文件及链接静态库
本文为原创文章,转载需指明该文链接 1.代码目录结构如下: comm/ comm/inc/apue.h 3 atexit.c Makefile 5 staticlib/lib/ staticlib ...
- 【DSP开发】DSP能用VS2010生成的链接库文件吗?
[DSP开发]DSP能用VS2010生成的链接库文件吗? 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 说明:可能这个问题让行家看上去就会莞尔一笑,但是很多 ...
- cocopod 中添加第三方框架,包含静态库文件,使用svn添加上传
step one: 进入静态库文件的目录 cd 路径: step two:使用命令添加 svn add 静态库名字; 然后更新一下代码就OK
- mac下svn问题——“.a”(静态库)文件无法上传解决
mac下svn问题——“.a”(静态库)文件无法上传解决 “.a”(静态库)文件无法上传(svn工具:Versions) 网上查询了一下,说是Xcode自带的svn和Versi ...
- svn管理代码在cornerstone上无法添加.a 静态库文件
有时候.a静态库不能上传到svn的服务器 导致别人拉代码运行不了 这是因为cornerstone设置里面默认不会提交.a文件, 在上图选项栏里是cornerstone默认忽略上传的文件名后缀,在这里 ...
- 制作静态库文件(.a文件)
制作静态库文件(.a文件) 1.创建静态库工程: 在Xcode中new一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static ...
- RF根据单个/多个output文件重新生成log和report文件
场景1:根据单个output文件重新生成log和report文件命令: rebot -d 日志和报告文件保存路径 output.xml文件 场景2:合并两个不同路径下的output文件并生成新的lo ...
- linux 静态库文件
1.生成目标文件 gcc -o mylib.o -c mylib.c 2.生成静态库文件 ar rcs libmylib.a mylib.o 查看库信息: nm libmylib.a //====== ...
随机推荐
- SQL Server 2008 R2占用内存越来越大解决方法
最近开发sql server数据库项目的过程中发现了这么一个问题,后台网站内存占用95%,通过任务管理器查看占内存的进程sqlserver.exe,是因为SQL Server 2008 R2运行越久, ...
- python string 之 format
python 在 2.6之后支持了string的format功能, 很强大, 应该成为使用习惯. http://blog.csdn.net/handsomekang/article/details/9 ...
- qing-automation简单入门介绍
1.相关文档:http://www.51testing.com/html/50/category-catid-250.html 2.进行Qing automation相关操作之前,必须安装好jdk跟a ...
- 16.Python使用lxml爬虫
1.lxml是解析库,使用时需要导入该包,直接在命令行输入:pip3 install lxml,基本上会报错.正确应该去对应的网址:https://pypi.org/project/lxml/#fil ...
- k8s1.4.3安装实践记录(3)下载基础镜像
下载基础镜像,因为Google被墙,所以我们用时速云中的镜像来tag docker pull index.tenxcloud.com/google_containers/pause-amd64:3.0 ...
- Java中的自动类型转换/隐式类型转换
整型.实型(常量).字符型数据可以混合运算.运算中,不同类型的数据先转化为同一类型,然后进行运算. 转换从低级到高级. 自动类型转换必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: sho ...
- 1106 Lowest Price in Supply Chain
题意:略 思路:寻找树的叶结点中深度最低的,记录最低深度minDepth和具有相同最低深度的结点个数cnt. 代码: #include <cstdio> #include <cmat ...
- nfs之脚气
nfs工作模式参考 一.NFs是什么 NFS是Network File System的缩写,即网络文件系统.客户端通过挂载的方式将NFS服务器端共享的数据目录挂载到本地目录下. nfs为什么需要RPC ...
- 第十章 Secret & Configmap(下)
10.4 ConfigMap Secret可以为Pod提供密码.Token.私钥等敏感数据:对于一些非敏感数据,比如一些配置信息,则可以用ConfigMap. configMap的使用方式与Secre ...
- 十六.jQuery源码解析之Sizzle设计思路.htm
为了便于后面的叙述,需要了解一些相关术语和约定. 并列选择器表达式:"div,p,a"====>div,p,a是并列的. 块表达式:"div>p"中 ...