環(huán)境
1.Windows;
2.Msvc2013;
3.Qt5.5.1 -x86 and -x64晌姚。
簡(jiǎn)介
對(duì)Qt+Msvc聯(lián)合開(kāi)發(fā)的代碼進(jìn)行編譯笙各,使用cmd命令行在控制臺(tái)中一條一條的輸入命令比較繁瑣尖啡,所以使用Python編寫腳本糖声,對(duì)腳本中做簡(jiǎn)單的設(shè)置,達(dá)到方便編譯代碼的目的鸦泳,腳本中依舊采用調(diào)用cmd命令實(shí)現(xiàn)編譯冯丙。
源碼
#coding=utf-8
#-------------------------
# 編譯Qt代碼
#-------------------------
import os
#Start--------------設(shè)置項(xiàng)---------------
#設(shè)置源代碼項(xiàng)目路徑
codeFilePath = 'E:/Code/'
#設(shè)置編譯環(huán)境 x86 / x64
buildEnv = 'x86'
#設(shè)置編譯類型 Debug / Release / Debug_And_Release
buildType = 'Debug_And_Release'
#設(shè)置Msvc2013 x86環(huán)境肉瓦,即“vcvars32.bat”所在路徑
msvcEnv32 = 'D:/Microsoft Visual Studio 12.0/VC/bin/'
#設(shè)置Msvc2013 x64環(huán)境,即“vcvars64.bat”所在路徑
msvcEnv64 = 'D:/Microsoft Visual Studio 12.0/VC/bin/amd64/'
#設(shè)置Qt x86環(huán)境胃惜,即“qtenv2.bat”所在路徑
qtEnv32 = 'D:/Qt5.5/Qt32/5.5/msvc2013/bin/'
#設(shè)置Qt x64環(huán)境泞莉,即“qtenv2.bat”所在路徑
qtEnv64 = 'D:/Qt5.5/Qt64/5.5/msvc2013_64/bin/'
#End----------------設(shè)置項(xiàng)---------------
#Msvc運(yùn)行環(huán)境批處理文件
batMsvc32 = 'vcvars32.bat'
batMsvc64 = 'vcvars64.bat'
#Qt運(yùn)行環(huán)境批處理文件
batQt = 'qtenv2.bat'
#Msvc和Qt環(huán)境
msvcEnv = ''
batMsvc = ''
qtEnv = ''
if (buildEnv == 'x86'):
msvcEnv = msvcEnv32
batMsvc = batMsvc32
qtEnv = qtEnv32
elif (buildEnv == 'x64'):
msvcEnv = msvcEnv64
batMsvc = batMsvc64
qtEnv = qtEnv64
else:
print('buildEnv 設(shè)置值為 x86 / x64,請(qǐng)重新選擇')
quit
# 編譯類型
qmakeConfig = ''
if (buildType == 'Debug'):
qmakeConfig = 'debug'
elif (buildType == 'Release'):
qmakeConfig = 'release'
elif (buildType == 'Debug_And_Release'):
qmakeConfig = '"debug_and_release build_all"'
else:
print ('buildType 設(shè)置值為 Debug / Release / Debug_And_Release')
quit
#Msvc的“vcvars32.bat”文件所在磁盤
tmpDir = msvcEnv.split(':')
msvcDir = tmpDir[0] + ':'
#Qt的“qtenv2.bat”文件所在磁盤
tmpDir = qtEnv.split(':')
qtDir = tmpDir[0] + ':'
#源代碼項(xiàng)目所在磁盤
tmpDir = codeFilePath.split(':')
codeDir = tmpDir[0] + ':'
#編譯命令
cmd_Build = '''%s & \
cd %s & \
%s & \
%s & \
cd %s & \
%s & \
%s & \
cd %s & \
qmake & \
qmake CONFIG+=%s & \
nmake & \
nmake clean & \
''' % (msvcDir, msvcEnv, batMsvc, qtDir, qtEnv, batQt, codeDir, codeFilePath, qmakeConfig)
#刪除Makefile文件
def rmMakefile(rootDir):
for fileName in os.listdir(rootDir):
pathName = os.path.join(rootDir, fileName)
if (os.path.isfile(pathName)):
if (fileName.startswith('Makefile')):
os.remove(pathName)
else:
rmMakefile(pathName)
#刪除Makefile文件
rmMakefile(codeFilePath)
#執(zhí)行編譯
os.system(cmd_Build)
#編譯完成后刪除Makefile文件
rmMakefile(codeFilePath)
注:代碼中多數(shù)地方?jīng)]做規(guī)則檢查