Windows下命令行编译MFC工程
Posted -飞鹤-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于Windows下命令行编译MFC工程的主要内容,如果未能解决你的问题,请参考以下文章
在windows平台如何用MinGW编译工程?工程中有Makefile.an和Makefile.in文件,要输入啥命令呢?