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

网友投稿 1083 2022-05-29

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)))

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

.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)

Makefile

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:把设备分享给每个Docker Container
下一篇:C++ static静态成员
相关文章