makefile生成可执行文件、静态库、动态库模板

举报
hsg1204 发表于 2019/01/03 20:16:03 2019/01/03
【摘要】 1、生成可执行文件的makefile复制代码##############################################################################source file#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件SOURCE := $(wildcard *.c) $(wildcard *.cpp)OBJS :...

1、生成可执行文件的makefile

复制代码

######################################

#

######################################

#source file

#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件

SOURCE  := $(wildcard *.c) $(wildcard *.cpp)

OBJS    := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE))) 

  

#target you can change test to what you want

#目标文件名,输入任意你想要的执行文件名

TARGET  := test

  

#compile and lib parameter

#编译参数

CC      := gcc      #编译器

LIBS    :=          #链接哪些库

LDFLAGS :=          #lib库路径

DEFINES :=

INCLUDE := -I.

CFLAGS  := -g -Wall -O3 $(DEFINES) $(INCLUDE)  #-g -Wall -O3 -Iinclude

CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H         #CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项

  

  

#i think you should do anything here

#下面的基本上不需要做任何改动了

.PHONY : everything objs clean veryclean rebuild

  

everything : $(TARGET)

  

all : $(TARGET)

  

objs : $(OBJS)

  

rebuild: veryclean everything

                

clean :

    rm -fr *.so

    rm -fr *.o

    

veryclean : clean

    rm -fr $(TARGET)

  

$(TARGET) : $(OBJS)

    $(CC) $(CXXFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(LIBS)

复制代码



2、生成静态链接库的makefile

复制代码

######################################

#

#

######################################

  

#target you can change test to what you want

#共享库文件名,lib*.a

TARGET  := libtest.a

  

#compile and lib parameter

#编译参数

CC      := gcc

AR      = ar

RANLIB  = ranlib

LIBS    :=

LDFLAGS :=

DEFINES :=

INCLUDE := -I.

CFLAGS  := -g -Wall -O3 $(DEFINES) $(INCLUDE)

CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H

  

#i think you should do anything here

#下面的基本上不需要做任何改动了

  

#source file

#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件

SOURCE  := $(wildcard *.c) $(wildcard *.cpp)

OBJS    := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))

  

.PHONY : everything objs clean veryclean rebuild

  

everything : $(TARGET)

  

all : $(TARGET)

  

objs : $(OBJS)

  

rebuild: veryclean everything

                

clean :

    rm -fr *.o

    

veryclean : clean

    rm -fr $(TARGET)

  

$(TARGET) : $(OBJS)

    $(AR) cru $(TARGET) $(OBJS)

    $(RANLIB) $(TARGET)

复制代码


3、生成动态链接库的makefile

复制代码

######################################

#

#

######################################

  

#target you can change test to what you want

#共享库文件名,lib*.so

TARGET  := libtest.so

  

#compile and lib parameter

#编译参数

CC      := gcc

LIBS    :=

LDFLAGS :=

DEFINES :=

INCLUDE := -I.

CFLAGS  := -g -Wall -O3 $(DEFINES) $(INCLUDE)

CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H

SHARE   := -fPIC -shared -o

  

#i think you should do anything here

#下面的基本上不需要做任何改动了

  

#source file

#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件

SOURCE  := $(wildcard *.c) $(wildcard *.cpp)

OBJS    := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))

  

.PHONY : everything objs clean veryclean rebuild

  

everything : $(TARGET)

  

all : $(TARGET)

  

objs : $(OBJS)

  

rebuild: veryclean everything

                

clean :

    rm -fr *.o

    

veryclean : clean

    rm -fr $(TARGET)

  

$(TARGET) : $(OBJS)

    $(CC) $(CXXFLAGS) $(SHARE) $@ $(OBJS) $(LDFLAGS) $(LIBS)


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。