nmake编译boost程序的脚本

 

mk.bat

@echo on
@setlocal
@echo ===============================================================
@echo            Windows 32bit 控制台程序 自动编译脚本
@echo ===============================================================

@set  DISPLAY=echo -

@rem *********************************************************

@set MAKE=nmake /NOLOGO
@set OUTPUT=bin
@set MKFILE=nmakefile.mk

@rem *********************************************************
@%DISPLAY%  参数检查
@rem *********************************************************

@IF NOT EXIST %OUTPUT%  @mkdir %OUTPUT%

@IF not "%1" == "" (
    @IF /i "%1" == "clean"  goto clean && goto end

    @IF /i "%1" == "debug"  goto debug
   
    @IF /i "%1" == "release" (  goto release
    ) else (
        @echo -!- Wrong compiled parameter "%1"
        @goto end
    )
) else (
    @goto debug
)

@rem **************************************************************************
   
:debug
 @echo ==^> compile DEBUG version
    @set EXE_FLAG=dbg
   
 @%MAKE% DEBUG_FLAG=/D_DEBUG THREAD_LINK=/MDd  EXE_FLAG=%EXE_FLAG% OUTPUT=%OUTPUT% /f %MKFILE%
    @IF %ERRORLEVEL% NEQ 0 goto end
    @goto result
   
:release
 @echo ==^> compile RELEASE version
    @set EXE_FLAG=rel

    @%MAKE% DEBUG_FLAG=/DNDEBUG THREAD_LINK=/MT  EXE_FLAG=%EXE_FLAG% OUTPUT=%OUTPUT% /f %MKFILE%
    @IF %ERRORLEVEL% NEQ 0 goto end
    @goto result

@rem **************************************************************************
:result
    @echo:
    @echo ----------------- result  ----------------------------
    @echo:
    @dir %OUTPUT%\*.exe

    @echo ====================================================
    @echo:
    @goto end

@rem **************************************************************************
:clean
    @echo ==^> Clean files
    @%MAKE% clean  /f %MKFILE%

   
@rem **************************************************************************
:end
    @rem 结束
    @endlocal
    @echo:
    @rem pause
    @goto :eof

 

[nmakefile.mk]


#*********************************************************
# 常用路径配置
VC_HOME     = "D:\Program Files\Microsoft Visual Studio 10.0\VC"
WINSDK_HOME = "C:\Program Files\Microsoft SDKs\Windows\v7.0A"
BOOST_HOME  = D:\boost\boost_1_49_0

# VC 配置
VC_INC = $(VC_HOME)\include
VC_LIB = $(VC_HOME)\lib
VC_BIN = $(VC_HOME)\bin

# Windows SDK 配置
WINSDK_INC = $(WINSDK_HOME)\include
WINSDK_LIB = $(WINSDK_HOME)\lib

# Boost 配置
BOOST_INC = $(BOOST_HOME)
BOOST_LIB = $(BOOST_HOME)\stage\lib

#-----------------
# BOOST宏:
#-----------------
#  BOOST_ALL_DYN_LINK    # 动态链接各种boost库
#  BOOST_ALL_NO_LIB      # 不使用boost提供的auto-link机制
#  BOOST_LIB_DIAGNOSTIC  # 输出程序具体链接了哪些boost库以及链接顺序
BOOST_FLAG = /DBOOST_LIB_DIAGNOSTIC
BOOST_LINK =
# libboost_system-vc100-mt-s-1_49.lib

#**************************************************************************
#--------------------------------------
# 线程和链接类型, Debug / Release
#--------------------------------------
#  /MT      多线程
#  /MTd     多线程调试
#  /MD      多线程DLL
#  /MDd     多线程DLL调试

THREAD_LINK = /MDd
DEBUG_FLAG  = /D_DEBUG
EXE_FLAG    = MDd_dbg

#**************************************************************************

INCS = /I .\ /I $(VC_INC) /I$(WINSDK_INC) /I $(BOOST_INC) /D_WIN32 $(BOOST_FLAG)

LIBS = /LIBPATH:$(VC_LIB) /LIBPATH:$(WINSDK_LIB) /LIBPATH:$(BOOST_LIB)  $(BOOST_LINK)


#**************************************************************************
CPPFLAGS  = /nologo /O2 /EHsc /D_WIN32_WINNT=0x0501 $(DEBUG_FLAG) $(THREAD_LINK) $(INCS) /c

#**************************************************************************

NO_DEF_LIB =
# /NODEFAULTLIB:libcmtd.lib
# /NODEFAULTLIB:libcmt.lib
# /NODEFAULTLIB:libcpmtd.lib
# /NODEFAULTLIB:msvcrt.lib

LINK_FLAG = /nologo /MACHINE:X86 /SUBSYSTEM:CONSOLE $(LIBS) $(NO_DEF_LIB)

#**************************************************************************
EXE = $(OUTPUT)\client_$(EXE_FLAG).exe              \
      $(OUTPUT)\t_thread_$(EXE_FLAG).exe            \
      $(OUTPUT)\chat_client_$(EXE_FLAG).exe         \
      $(OUTPUT)\chat_server_$(EXE_FLAG).exe         \
      $(OUTPUT)\t_credit_card_$(EXE_FLAG).exe       \
      $(OUTPUT)\t_ptime_$(EXE_FLAG).exe             \

OBJS = client.obj           \
       t_thread.obj         \
       chat_client.obj      \
       chat_server.obj      \
       t_credit_card.obj    \
       t_ptime.obj          \


all: $(OBJS) $(EXE)

#**************************************************************************
# 显示规则
$(OUTPUT)\client_$(EXE_FLAG).exe: client.obj
 link /OUT:$@ $(LINK_FLAG) client.obj


$(OUTPUT)\t_thread_$(EXE_FLAG).exe: t_thread.obj
 link /OUT:$@ $(LINK_FLAG) t_thread.obj
   
$(OUTPUT)\chat_client_$(EXE_FLAG).exe: chat_client.obj
    link /OUT:$@ $(LINK_FLAG) chat_client.obj
   
$(OUTPUT)\chat_server_$(EXE_FLAG).exe: chat_server.obj
    link /OUT:$@ $(LINK_FLAG) chat_server.obj

$(OUTPUT)\t_credit_card_$(EXE_FLAG).exe: t_credit_card.obj
    link /OUT:$@ $(LINK_FLAG) t_credit_card.obj

$(OUTPUT)\t_ptime_$(EXE_FLAG).exe: t_ptime.obj
    link /OUT:$@ $(LINK_FLAG) t_ptime.obj

#**************************************************************************
.cpp.obj:
 $(CPP) $(CPPFLAGS) $<

#**************************************************************************
clean:
    del /F /Q *.obj

#**************************************************************************

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值