设为首页 收藏本站
查看: 1157|回复: 0

[经验分享] Windows下 VS2015编译levelDB(nmake)

[复制链接]

尚未签到

发表于 2017-12-8 09:35:05 | 显示全部楼层 |阅读模式
#############################################################################  MAKEFILE      = Makefile
  ####### 编译器,工具和选项设置
  CC            = cl
  CXX           = cl
  DEFINES       = -DLEVELDB_PLATFORM_WINDOWS -DOS_WIN -DWIN32 -DWIN64 -DNDEBUG -D_CRT_SECURE_NO_WARNINGS
  # 如果需要编译debug版本,只需要将上面的 -DNDEBUG 去掉即可
  CXXFLAGS      = -nologo -Zc:wchar_t -FS -Zc:strictStrings -Zc:throwingNew \
  -Zi -MT -O2 -GR -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 \
  -EHsc  $(DEFINES)
  # 如果需要编译debug版本,可以将上面的 -O2 去掉,-W3改为-W1
  # -MT表示使用运行时库的多线程静态版本,可以根据需要改为-MTd/-MD/-MDd
  INCPATH       = -I. -I.\include -IC:\Boost\include\boost-1_62
  LINKER        = lib
  # 如果要生成dll,上面的改为 link
  LFLAGS        =  /NOLOGO /MACHINE:X64
  # 如果要生成32位版本,上的X64改为X86
  # 如果是生成dll,上面还应该添加 /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /DLL /SUBSYSTEM:WINDOWS /MANIFEST:embed
  LIBS          = /LIBPATH:C:\Boost\lib64-msvc-14.0

  IDC           =>  IDL           = midl
  ZIP           = zip -r -9
  COPY          = copy /y
  COPY_FILE     = copy /y
  COPY_DIR      = xcopy /s /q /y /i
  DEL_FILE      = del
  DEL_DIR       = rmdir
  MOVE          = move
  CHK_DIR_EXISTS= if not exist
  MKDIR         = mkdir
  INSTALL_FILE    = copy /y
  INSTALL_PROGRAM = copy /y
  INSTALL_DIR     = xcopy /s /q /y /i
  ####### 输出目录设置
  OBJECTS_DIR   = build\obj
  ####### 文件列表
  SOURCES     =   .\db\builder.cc \
  .\db\c.cc \
  .\db\dbformat.cc \
  .\db\db_bench.cc \
  .\db\db_impl.cc \
  .\db\db_iter.cc \
  .\db\filename.cc \
  .\db\log_reader.cc \
  .\db\log_writer.cc \
  .\db\memtable.cc \
  .\db\repair.cc \
  .\db\table_cache.cc \
  .\db\version_edit.cc \
  .\db\version_set.cc \
  .\db\write_batch.cc \
  .\port\port_win.cc \
  .\table\block.cc \
  .\table\block_builder.cc \
  .\table\format.cc \
  .\table\iterator.cc \
  .\table\merger.cc \
  .\table\table.cc \
  .\table\table_builder.cc \
  .\table\two_level_iterator.cc \
  .\util\arena.cc \
  .\util\cache.cc \
  .\util\coding.cc \
  .\util\comparator.cc \
  .\util\crc32c.cc \
  .\util\env.cc \
  .\util\env_boost.cc \
  .\util\hash.cc \
  .\util\histogram.cc \
  .\util\logging.cc \
  .\util\options.cc \
  .\util\status.cc \
  .\util\testutil.cc \
  .\util\win_logger.cc \
  OBJECTS     =   $(OBJECTS_DIR)\builder.obj \
  $(OBJECTS_DIR)\c.obj \
  $(OBJECTS_DIR)\dbformat.obj \
  $(OBJECTS_DIR)\db_bench.obj \
  $(OBJECTS_DIR)\db_impl.obj \
  $(OBJECTS_DIR)\db_iter.obj \
  $(OBJECTS_DIR)\filename.obj \
  $(OBJECTS_DIR)\log_reader.obj \
  $(OBJECTS_DIR)\log_writer.obj \
  $(OBJECTS_DIR)\memtable.obj \
  $(OBJECTS_DIR)\repair.obj \
  $(OBJECTS_DIR)\table_cache.obj \
  $(OBJECTS_DIR)\version_edit.obj \
  $(OBJECTS_DIR)\version_set.obj \
  $(OBJECTS_DIR)\write_batch.obj \
  $(OBJECTS_DIR)\port_win.obj \
  $(OBJECTS_DIR)\block.obj \
  $(OBJECTS_DIR)\block_builder.obj \
  $(OBJECTS_DIR)\format.obj \
  $(OBJECTS_DIR)\iterator.obj \
  $(OBJECTS_DIR)\merger.obj \
  $(OBJECTS_DIR)\table.obj \
  $(OBJECTS_DIR)\table_builder.obj \
  $(OBJECTS_DIR)\two_level_iterator.obj \
  $(OBJECTS_DIR)\arena.obj \
  $(OBJECTS_DIR)\cache.obj \
  $(OBJECTS_DIR)\coding.obj \
  $(OBJECTS_DIR)\comparator.obj \
  $(OBJECTS_DIR)\crc32c.obj \
  $(OBJECTS_DIR)\env.obj \
  $(OBJECTS_DIR)\env_boost.obj \
  $(OBJECTS_DIR)\hash.obj \
  $(OBJECTS_DIR)\histogram.obj \
  $(OBJECTS_DIR)\logging.obj \
  $(OBJECTS_DIR)\options.obj \
  $(OBJECTS_DIR)\status.obj \
  $(OBJECTS_DIR)\testutil.obj \
  $(OBJECTS_DIR)\win_logger.obj \
  DESTDIR        = build
  TARGET         = leveldb.lib
  DESTDIR_TARGET = build\leveldb.lib
  ####### 隐式规则
  .SUFFIXES: .c .cpp .cc .cxx
  ## util目录
  {.\util}.cc{build\obj\}.obj::
  $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$(OBJECTS_DIR)\ @<<
  $<
  <<
  ## table目录
  {.\table}.cc{build\obj\}.obj::
  $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$(OBJECTS_DIR)\ @<<
  $<
  <<
  ## port目录
  {.\port}.cc{build\obj\}.obj::
  $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$(OBJECTS_DIR)\ @<<
  $<
  <<
  ## doc目录
  {.\doc}.cc{build\obj\}.obj::
  $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$(OBJECTS_DIR)\ @<<
  $<
  <<
  ## helpers目录
  {.\helpers}.cc{build\obj\}.obj::
  $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$(OBJECTS_DIR)\ @<<
  $<
  <<
  ## db目录
  {.\db}.cc{build\obj\}.obj::
  $(CXX) -c $(CXXFLAGS) $(INCPATH) -Fo$(OBJECTS_DIR)\ @<<
  $<
  <<
  ####### 构建规则
  first: all
  all: $(DESTDIR_TARGET)
  $(DESTDIR_TARGET):  $(OBJECTS) FORCE
  $(LINKER) $(LFLAGS) /OUT:$(DESTDIR_TARGET) @<<
  $(OBJECTS) $(LIBS)
  <<
  clean:
  $(DEL_FILE) /q $(OBJECTS)
  $(DEL_FILE) /q $(DESTDIR_TARGET)
  $(DEL_DIR) /s /q $(DESTDIR)
  install:
  uninstall:
  check: first
  # 因为windows下的mkdir没有-p参数,所以必须先判断目录是否存在
  FORCE:
  if not exist $(DESTDIR) $(MKDIR) $(DESTDIR)
  if not exist $(OBJECTS_DIR) $(MKDIR) $(OBJECTS_DIR)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-422051-1-1.html 上篇帖子: CentOS7安装MySQL Server 下篇帖子: Windows消息机制详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表