实现目标:将项目文件中的所有源代码文件,编译成 二进制文件(.o),然后生成lib库
首先,获取所有目标源文件(c/cpp文件)
src = $(wildcard ./*.cpp)
接着,对目标源文件进行编译,生成目标二进制文件(.o)
OBJECTS = $(src:%.cpp=%.o)
然后,确定目标,生成lib库文件(.a)
$(LIBNAME): ${OBJECTS}
$(AR) rc $@ ${OBJECTS} $(MY_LIBS)
其中,$(MY_LIBS) 是项目所依赖的一些项目中的其他已有库文件 示例如下:
MY_LIBS= ./Lib/libSend.a \
./Lib/libRec.a \
./Lib/libGetData.a
最后,make clean 清除编译后的文件
clean :
rm -rf $(OBJECTS) $(LIBNAME)
完整Makefile 文件如下所示:
include Make.defines
MY_LIBS= ../Lib/libSend.a \
../Lib/libRec.a \
../Lib/libGetData.a \
src = $(wildcard ./*.cpp)
OBJECTS = $(src:%.cpp=%.o)
LIBNAME = Project_Lib/CreatLibName.a
all: $(LIBNAME)
$(LIBNAME): ${OBJECTS}
$(AR) rc $@ ${OBJECTS} $(MY_LIBS)
clean :
rm -rf $(OBJECTS) $(LIBNAME)
此外,还需要编写make.define 文件,这里需要把一些依赖的一些文件添加进来,主要是负责将源代码生成二进制文件(.o)所依赖的文件。
完整make.define 文件如下所示:
CC = nvcc / gcc
CXX = c++
RANLIB = ranlib
TARGET_OS = LINUX
AR=ar
LD=ld
I_OPTS= -I ./Include
LDFLAGS =
CFLAGS= -g -DUNIX -DLINUX
.cpp.o:
$(CC) -c $(I_OPTS) $(CFLAGS) $< -o $@
.c.o:
$(CC) -c $(I_OPTS) $(CFLAGS) $< -o $@
上述完成后,就可以执行编译操作了:
|