Windows下命令行编译MFC工程

1. makefile方式

Visual Studio自带有nmake,也可以解析makefile文件,但是功能较弱,此处使用gcc自带的make解析工具。

1.1. 配置编译环境

call “C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat”

1.2. 建立测试工程

新建mfc的对话框工程,名字默认即可。

1.3. 建立makefile文件

SRC_DIR=.
OBJ_DIR=debug
CPP_SRC=$(wildcard $(SRC_DIR)/*.cpp)

OBJ_FILES=$(CPP_SRC:$(SRC_DIR)/%.cpp=$(OBJ_DIR)/%.obj)
PCH_FILE=mfc.pch
MANIFEST_FILE=$(OBJ_DIR)\mfc.exe.embed.manifest.res

PCH_OPT=/c /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D _MBCS /D _AFXDLL /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope
PCH_OPT+=/Yc"StdAfx.h" /Fp$(OBJ_DIR)"\mfc.pch" /Fo$(OBJ_DIR)"\\" /Fd$(OBJ_DIR)"\vc100.pdb" /Gd /TP /analyze- /errorReport:queue stdafx.cpp

REC_OPT=/D _DEBUG /D _AFXDLL /l"0x0409" /Idebug\ /nologo /fo$(OBJ_DIR)"\mfc.res" mfc.rc

APP_NAME=mfcTest.exe
RES_FILE=mfc.rc
RES_OBJ=mfc.res

LINK_OPT=
mfc: $(OBJ_DIR) $(PCH_FILE) $(OBJ_FILES) $(RES_FILE)
link /OUT:"$(APP_NAME)" /nologo /subsystem:windows /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"debug\mfc.lib" /MACHINE:X86 $(OBJ_FILES) $(RES_OBJ)

$(RES_FILE):$(RES_OBJ)
rc $(REC_OPT)

$(PCH_FILE): stdafx.cpp
cl $(PCH_OPT)

$(OBJ_FILES): $(CPP_SRC)
cl /nologo /MDd /D "_DEBUG" /D "_AFXDLL" /Fo"debug\\" /c $(CPP_SRC)


$(OBJ_DIR):
md $(OBJ_DIR)

.phony: clean

clean:
	del /s debug\*.obj

1.4. 执行 make

清除编译文件

make clean

编译

make

2. msbuild

2.1. 语法

在这里插入图片描述

2.2. 编译整个解决方案

如果当前目录下只有一个项目,可以不用指定项目名。
msbuild
msbuild mfc.sln

2.3. 编译指定工程

msbuild mfc\mfc.vcxproj

2.4. 清除编译生成

/t, -t两种形工均可。
msbuild mfc.sln /t:clean
msbuild mfc.sln -t:clean

2.5. 重新编译

msbuild mfc.sln /t:rebuild

2.6. 编译指定配置版本

默认为版本为Debug
msbuild mfc.sln /p:configuration=“Release”
msbuild mfc.sln /p:configuration=“Debug”
msbuild mfc.sln /p:configuration=“Test”

2.7. 编译指定平台

默认平台类型为Win32
msbuild mfc.sln /p:configuration=“Debug” /p:Platform=Win32
msbuild mfc.sln /p:configuration=“Debug” /p:Platform=x64

2.8. 多核编译

为了提高编译速度,可以指定多核编译,以下命令表示启动所有核进行编译
msbuild mfc.sln /p:configuration=“Debug” /p:Platform=Win32 /m
以下命令表示启用2核进行编译
msbuild mfc.sln /p:configuration=“Debug” /p:Platform=Win32 /m:2

2.9. 指定输出目录

vcxproj文件中,有很多可以修改的变量, ( C o n f i g u r a t i o n ) , (Configuration), (Configuration)(Platform), ( P r o j e c t N a m e ) , (ProjectName), (ProjectName)(OutDir), ( T a r g e t N a m e ) , (TargetName), (TargetName)(TargetExt)等,都是可以通过/p:来指定的。
msbuild /p:OutDir=d:\bin

2.10. 指定多个参数

指定警告级别和编译版本
msbuild mfc.sln /p:configuration=Release;Platform=x64;WarningLevel=2

2.11 添加自定义编译参数

view->property manager->Add New Property Sheet,添加完成之后,右键新建Property选择User Macro,添加自定义USER_Macro。然后在c/c+±>Command Line中添加/DUSER_Macro
msbuild mfc.sln /p:USER_Macro=TEST_MODE
然后可以代码中使用
#ifdef TEST_MODE
#endif

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值