zoukankan      html  css  js  c++  java
  • 我所使用的一个通用的Makefile模板

    话不多说,请看:

    我的项目有的目录结构有:

    dirls/
    ├── include
    │   └── apue.h
    ├── lib
    │   ├── error.c
    │   ├── error.o
    │   └── Makefile
    ├── src
    │   ├── dirls.c
    │   ├── dirls.out
    │   └── Makefile
    └── test_client

    而我的Makefile模板代码如下:

    SRCS = $(wildcard *.c ../lib/*.c)    #wildcard把 指定目录 ./ 和 ../lib 下的所有后缀是c的文件全部展开。
    
    OBJS = $(SRCS:.c = .o)    #OBJS将$(SRCS)下的.c文件转化为.o文件
    
    CC = gcc   #代表所使用的编译器
    
    INCLUDES = -I../include    #头文件查找路径
               -I. 
    
    LIBS = -L../lib    #链接库查找地址
    
    CCFLAGS = -g -Wall -O0   #附加参数
    
    OUTPUT = dirls.out   #输出程序名称
    
    all:$(OUTPUT)
    
    $(OUTPUT) : $(OBJS)
        $(CC) $^ -o $@ $(INCLUDES) $(LIBS)
    
    %.o : %.c
        $(CC) -c $< $(CCFLAGS)
    
    clean:
        rm -rf *.out *.o    #清除中间文件及生成文件
    
    .PHONY:clean

    另外附上别的网站的几个Makefile模板:

    1、编译动态库

    ############################################################# 
    # Makefile for shared library.
    # 编译动态链接库
    #############################################################
    #set your own environment option
    CC = g++
    CC_FLAG = -D_NOMNG -D_FILELINE
    
    #set your inc and lib
    INC = 
    LIB = -lpthread -L./ -lsvrtool
    
    #make target lib and relevant obj 
    PRG = libsvrtool.so
    OBJ = Log.o
    
    #all target
    all:$(PRG)
    
    $(PRG):$(OBJ)
        $(CC) -shared -o $@ $(OBJ) $(LIB)
    
    .SUFFIXES: .c .o .cpp
    .cpp.o:
        $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o
    
    .PRONY:clean
    clean:
        @echo "Removing linked and compiled files......;
        rm -f $(OBJ) $(PRG)

    2、编译静态库

    #############################################################
    # Makefile for static library.
    # 编译静态链接库
    #############################################################
    #set your own environment option
    CC = g++
    CC_FLAG = -D_NOMNG -D_FILELINE
    
    #static library use 'ar' command 
    AR = ar
    
    #set your inc and lib
    INC = 
    LIB = -lpthread -L./ -lsvrtool
    
    #make target lib and relevant obj 
    PRG = libsvrtool.a
    OBJ = Log.o
    
    #all target
    all:$(PRG)
    $(PRG):$(OBJ)
        ${AR} rv ${PRG} $?
    
    .SUFFIXES: .c .o .cpp
    .cpp.o:
        $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o
    
    .PRONY:clean
    clean:
        @echo "Removing linked and compiled files......"
        rm -f $(OBJ) $(PRG)

    3、可执行程序

    ###########################################
    #Makefile for simple programs
    ###########################################
    INC=
    LIB= -lpthread
    
    CC=CC
    CC_FLAG=-Wall
    
    PRG=threadpooltest
    OBJ=CThreadManage.o CThreadPool.o CThread.o CWorkerThread.o threadpooltest.o
    
    $(PRG):$(OBJ)
        $(CC) $(INC) $(LIB) -o $@ $(OBJ)
        
    .SUFFIXES: .c .o .cpp
    .cpp.o:
        $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o
    
    .PRONY:clean
    clean:
        @echo "Removing linked and compiled files......"
        rm -f $(OBJ) $(PRG)
  • 相关阅读:
    福利贴——爬取美女图片的Java爬虫小程序代码
    select多选 multiple的使用
    Android笔记---点击事件的四种写法
    二叉排序树的插入与删除
    hdu 5269 ZYB loves Xor I &amp;&amp; BestCoder Round #44
    linux 下同步异步,堵塞非堵塞的一些想法
    JavaScript编程随笔
    《从零開始学Swift》学习笔记(Day 51)——扩展构造函数
    What&#39;s Wrong With Hue Oozie Editor?
    2015.7个人反思小结以及兴许规划
  • 原文地址:https://www.cnblogs.com/sysu-blackbear/p/4034394.html
Copyright © 2011-2022 走看看