makefile的使用

来源:互联网 发布:整形网站源码 编辑:程序博客网 时间:2024/06/01 10:19

  对于makefile,自己很长时间不使用linux,就会忘记了如何使用的。自己的记性不太好,还是记下自己的代码以及分析,以后要使用的话,就会很容易记起来,好记性不如烂笔头呀。

OBJ_PATH  := obj
INCLUDE_DIR := -IG711/ -IG722/ -IG723/ -IG726/ -IG729/ -IH264Dec/ -Ionvif/  -I./ -ILIVE555_Client/
LIB := -L./Lib/RTSPClient
OBJ := obj/g711.o obj/g711_interface.o    

all: $(OBJ_PATH)/libOnvif_Live555_Client_SDK.so
.PHONY : all

$(OBJ_PATH)/libOnvif_Live555_Client_SDK.so : $(OBJ)
    g++ -shared -fPIC -o $@ $^ $(INCLUDE_DIR) $(LIB)

$(OBJ_PATH)/g711.o : G711/g711.cpp    
    g++ -fPIC -o $@  -c  $^ $(INCLUDE_DIR) $(LIB)  -lpthread

$(OBJ_PATH)/g711_interface.o : G711/g711_interface.cpp   
    g++ -fPIC  -o $@ -c $^ $(INCLUDE_DIR) $(LIB)  -lpthread

.PHONY : clean
clean :
    rm -rf   $(OBJ_PATH)/*

自己想要生成.so动态库文件,makefile默认执行第一个目标,自己使用PHONY创建假目标 ,这样,如果要生成多个目标文件的话,可以在后面添加文件

自己想要把生成的o文件指定到特定的文件,必要要在执g++行命令行的时候,利用-o + 路径/*.cpp,指定生成文件的路径,这样生成的文件才可以生成到指定文件目录。自己之前省略了这个,所以只在当前文件目录生成文件。

还有一点,就是生成so文件的时候,需要$(OBJ),这个地方需要指定要生成的o文件的名字和位置,否则也会出错,错误好象是make: 没有什么可以做的为 `all'。

0 0