将leveldb库加入自己的工程目录

来源:互联网 发布:杭州博远软件 编辑:程序博客网 时间:2024/06/07 22:55

工程目录

—MyProject
———Include
——————leveldb
—————————-*.h //leveldb库的所有头文件
———Libs
————-*.a
———Src
————-*.cpp
———Makefile

Makefile

以下makefile由网上万能makefile修改而来。

EXECUTABLE := magic#可执行文件名LIBDIR := ./Libs#静态库目录LIBS := libleveldb.a#静态库文件名INCLUDES := ./Include/#头文件目录SRCDIR := ./Src#除了当前目录外,其他源文件目录###############= := ?= += ################ := 像是C里的赋值; = 像是C里的引用#example1#A := foo#B := $(A)#A := bar#这时B的值仍为foo#example2#A = foo#B = $(A)#A = bar#这时B的值为bar#make会将整个makefile展开后,再决定变量的值,也就是说变量的值将会是整个makefile中最后被指定的值。#########################################CC := g++CFLAGS := -g -Wall -o3CPPFLAGS := $(CFLAGS)CPPFLAGS += $(addprefix -I,$(INCLUDES))###########addprefix######################字面意思,添加前缀#为$(INCLUDES)的所有路径加上前缀 -I##########################################CPPFLAGS += -MMD   #生成依赖文件*.dRM := rm -f########wildcard函数列举当前目录中扩展名为*.cpp的所有文件SRCS := $(wildcard *.cpp) $(wildcard $(addsuffix /*.cpp, $(SRCDIR)))#######OBJS := $(patsubst %.cpp,%.o,$(SRCS))###########patsubst 匹配替代的意思,将SRCS中找到的所有.cpp结尾的文件,然后把所有的.cpp换成.o#DEPS := $(patsubst %.o,%.d,$(OBJS))##############隐含规则####################$(EXECUTABLE)依赖于$(OBJS),但是makefile中没有指明$(OBJS)依赖谁,也没有命令生成他们#这时make的隐含规则开始起作用;针对$(OBJS)中的每个目标,make自动调用#$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $< -o $@#生成*.o文件#$< 表示依赖文件列表的第一个文件名#$@ 表示目标文件名#########################################.PHONY : all deps objs clean veryclean rebuild infoall : $(EXECUTABLE)deps : $(DEPS)objs : $(OBJS)clean :    @$(RM) $(OBJS)$(EXECUTABLE) : $(OBJS)    $(CC) -o $(EXECUTABLE) $(OBJS) $(addprefix $(LIBDIR)/,$(LIBS)) -lpthreadinfo :    @echo $(SRCS)    @echo $(OBJS)

测试

Main.cpp

#include <assert.h>  #include <iostream>  #include "leveldb/db.h" int main (int argc,char * argv[])  {      leveldb::DB* db;      leveldb::Options options;      options.create_if_missing = true;      std::string dbpath = "testdb";      leveldb::Status status = leveldb::DB::Open (options, dbpath, &db);      assert (status.ok ());      std::string key = "test";      std::string val = "test_value";      status = db->Put (leveldb::WriteOptions (), key, val);      val.clear ();      status = db->Get (leveldb::ReadOptions (), key, &val);      std::cout << key << ": " << val << std::endl;      return 0;}
原创粉丝点击