zoukankan      html  css  js  c++  java
  • 非万能Makefile的万能版本

    此Makefile用来生成共享库,一个前辈写的,像他本人表示感谢。

    PREFIX=/usr/local    #指定生成库的安装位置,当然只是程序员开发机上的位置。指定后 make install可以将库安装,app使用的时候可以指定该路径下的库文件,就能使用该库

    BIN=libmy.so #生成的库文件名

    LIBPATH=$(PREFIX)/lib #指定共享库的路径

    MY_CFLAGS=-I../include #头文件路径

    LIBS:= #可扩展lib,比如要添加glib,可以把glib路径加到这里,例如:-L../glibpath/lib -lglib

    INCLUDE=$(MY_CFLAGS) #可扩展头文件,例如glib头文件,追加:-I../glibpath/include/

    CFLAGS:=-g -Wall -O3 $(INCLUDE) #标志及头文件

    LDFLAGS= -Wl,-R$(LIBPATH) #依赖库的路径

    INSTALL=/usr/bin/install -c #指定用来安装生成库的——程序

    CC=gcc #没啥好说的 

    MAJOR=1 #版本
    MINOR=10000


    SOURCE=$(wildcard *.c) #源文件,此处匹配所有c文件
    OBJS:=$(patsubst %.c, %.o, $(SOURCE)) #中间件
    DEPS:=$(patsubst %.o, %.d, $(OBJS)) # 依赖项

    CPPFLAGS += -MMD #c++选项

    .PHONY: all deps objs clean #伪目标

    all: $(BIN)

    deps: $(DEPS)

    objs: $(OJBS)

    -include $(DEPS)

    $(BIN): $(OBJS)
    $(CC) $(LDFLAGS) -shared -fPIC -Wl,-soname,$(@).$(MAJOR) -o $(@).$(MAJOR).$(MINOR) $(OBJS) $(LIBS)
    /sbin/ldconfig -n .
    if test ! -f $(@);then ln -s $(@).$(MAJOR) $(@);fi
    $(RM) $(DEPS)

    splint:
    splint $(INCLUDE) $(SOURCE)
    clean:
    @$(RM) $(OBJS) $(DEPS) $(BIN)
    @$(RM) $(BIN).$(MAJOR) $(BIN).$(MAJOR).$(MINOR)

    install: #生成库以后,我们自己将库make install到指定的路径。
    if test ! -d $(PREFIX)/lib;then mkdir -p $(PREFIX)/lib;fi
    $(INSTALL) $(BIN).$(MAJOR).$(MINOR) $(PREFIX)/lib
    /sbin/ldconfig -n $(PREFIX)/lib

    己有能 勿自私 人所能 勿轻訾 jogger0703@gmail.com
  • 相关阅读:
    loadrunner 11安装教程
    测试用例
    软件测试分类
    软件测试模型
    VMware Workstation安装Red hat7.0联网问题总结
    Python网络编程基础pdf
    Python数据可视化编程实战pdf
    Python数据分析实战
    Python数据科学手册
    Python入门经典. 以解决计算问题为导向的Python编程实践
  • 原文地址:https://www.cnblogs.com/jogger/p/2869924.html
Copyright © 2011-2022 走看看