博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Makefile编写示例:构建一个库
阅读量:7059 次
发布时间:2019-06-28

本文共 2527 字,大约阅读时间需要 8 分钟。

1、目录结构如下:

[root@localhost libname]# tree.+-- include¦   +-- headerA.h¦   +-- headerB.h+-- lib+-- Makefile+-- src¦   +-- cppsrcA.cpp¦   +-- cppsrcB.cpp¦   +-- csrcA.c¦   +-- csrcB.c+-- test4 directories, 7 files

 

2、Makefile内容为:

CC           = gccCXX          = g++AR           = ar -rRM           = rm -f#INSTALL     = /usr/bin/install -m 644#INSTALL_BIN = /usr/bin/install -m 755# you can specify LIBTYPE=static when executing make, if you want to create a static libraryifeq ($(LIBTYPE),static)  CFLAGS     = -I./include  CXXFLAGS   = -I./includeelse  CFLAGS     = -I./include -fPIC  CXXFLAGS   = -I./include -fPIC  LDFLAGS    = -fPIC -sharedendifC_SRC        = src/csrcA.c \               src/csrcB.c              CXX_SRC      = src/cppsrcA.cpp \               src/cppsrcB.cppSRC_DIR      = srcSTATIC_OBJ_DIR =lib_obj/static_objDYNAMIC_OBJ_DIR=lib_obj/dynamic_objLIB_DIR      = libSTATIC_LIB   = libname.aDYNAMIC_LIB  = libname.soifeq ($(LIBTYPE),static)  LIB_NAME   = $(STATIC_LIB)  OBJS_DIR   = $(STATIC_OBJ_DIR)else  LIB_NAME   = $(DYNAMIC_LIB)  OBJS_DIR   = $(DYNAMIC_OBJ_DIR)endifC_OBJS       = $(patsubst $(SRC_DIR)/%.c, $(OBJS_DIR)/%.o, $(C_SRC))CXX_OBJS     = $(patsubst $(SRC_DIR)/%.cpp, $(OBJS_DIR)/%.o, $(CXX_SRC))ALL_OBJS     = $(C_OBJS) $(CXX_OBJS)INSTALL_PREFIX=/usr/local/libnameall: $(LIB_NAME)$(STATIC_LIB): $(OBJS_DIR) $(ALL_OBJS)    $(AR) $(LIB_DIR)/$@ $(ALL_OBJS)$(DYNAMIC_LIB): $(OBJS_DIR) $(ALL_OBJS)    $(CC) $(LDFLAGS) $(ALL_OBJS) -o $(LIB_DIR)/$@$(OBJS_DIR):    @if [ ! -d $(OBJS_DIR) ]; then \        echo mkdir -p $(OBJS_DIR) ; \        mkdir -p $(OBJS_DIR); \    fi$(C_OBJS):$(OBJS_DIR)/%.o:$(SRC_DIR)/%.c    $(CC) $(CFLAGS) -c $< -o $@$(CXX_OBJS):$(OBJS_DIR)/%.o:$(SRC_DIR)/%.cpp    $(CXX) $(CXXFLAGS) -c $< -o $@    #install:#uninstall:#test:.PHONY: cleanall cleancleanall: clean    $(RM) $(LIB_DIR)/$(STATIC_LIB) $(LIB_DIR)/$(DYNAMIC_LIB)clean:    $(RM) $(STATIC_OBJ_DIR)/*.o $(DYNAMIC_OBJ_DIR)/*.o

 

3、执行 make 和 make LIBTYPE=static 后的目录结构

[root@localhost libname]# tree.+-- include¦   +-- headerA.h¦   +-- headerB.h+-- lib¦   +-- libname.a¦   +-- libname.so+-- lib_obj¦   +-- dynamic_obj¦   ¦   +-- cppsrcA.o¦   ¦   +-- cppsrcB.o¦   ¦   +-- csrcA.o¦   ¦   +-- csrcB.o¦   +-- static_obj¦       +-- cppsrcA.o¦       +-- cppsrcB.o¦       +-- csrcA.o¦       +-- csrcB.o+-- Makefile+-- src¦   +-- cppsrcA.cpp¦   +-- cppsrcB.cpp¦   +-- csrcA.c¦   +-- csrcB.c+-- test7 directories, 17 files
posted on
2012-07-17 14:21 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/opangle/archive/2012/07/17/2595152.html

你可能感兴趣的文章
如何摆脱工具类
查看>>
Widnows批处理异地备份数据
查看>>
四边形优化DP学习
查看>>
红黑树
查看>>
远程推送脚本,创建任务计划
查看>>
设计模式 工厂和抽象工厂
查看>>
Maven学习第1期---Maven简单介绍
查看>>
#include <bits/stdc++.h>头文件
查看>>
iOS swift 语句只能写在函数体内
查看>>
C# 接收form表单中多个相同name值的问题
查看>>
Eclipse下配置使用Hadoop插件
查看>>
5/3上午
查看>>
回顾“.NET技术”.NET Remoting分布式开发
查看>>
移动开发多平台代码共享“.NET研究”
查看>>
Convert IPv6 Address to IP numbers (C#)
查看>>
总是弹出visual studio 实时调试器 三种解决办法
查看>>
12岁男孩发现Firefox严重安全漏洞获奖3000美元
查看>>
谷歌发安全警告:社交网络威胁用户隐私
查看>>
一起谈.NET技术,System.DateTime详解
查看>>
一起谈.NET技术,VS2010技巧:如何在js文件中使用jQuery智能感知
查看>>