欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)

发布时间:2025/7/25 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
from: Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)

  本文把makefile 分成了三份:生成可执行文件的makefile,生成静态链接库的makefile,生成动态链接库的makefile

  这些makefile都很简单,一般都是一看就会用,用法也很容易,只需要把它们拷贝到你的代码的同一目录下,然后就可以用 make 来生成目标文件了。

  下面是三个makefile的源代码:

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 := DEFINES := INCLUDE := -I. CFLAGS := -g -Wall -O3 $(DEFINES) $(INCLUDE) CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H#i think you should do anything here #下面的基本上不需要做任何改动了 .PHONY : everything objs clean veryclean rebuildeverything : $(TARGET)all : $(TARGET)objs : $(OBJS)rebuild: veryclean everythingclean :rm -fr *.sorm -fr *.overyclean : cleanrm -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 rebuildeverything : $(TARGET)all : $(TARGET)objs : $(OBJS)rebuild: veryclean everythingclean :rm -fr *.overyclean : cleanrm -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 rebuildeverything : $(TARGET)all : $(TARGET)objs : $(OBJS)rebuild: veryclean everythingclean :rm -fr *.overyclean : cleanrm -fr $(TARGET)$(TARGET) : $(OBJS)$(CC) $(CXXFLAGS) $(SHARE) $@ $(OBJS) $(LDFLAGS) $(LIBS)

总结

以上是生活随笔为你收集整理的Makefile常用万能模板(包括静态链接库、动态链接库、可执行文件)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。