工作中用到一個python腳本,自動化運行某目錄下的多個vc工程代碼。
編譯工程代碼的命令如下,直接運行會失敗,系統找不到devenv,我們需要添加devenv.exe所在的目錄到環境變量中。
os.system(
'
devenv
'+ name+
'
.sln /project
'+ name +
'
.vcproj /Rebuild "debug|win32" /Out
'+ name +
'
.cmp>nul
')
項目組已經有一個自己編寫的添加各種臨時環境變量的bat腳本,其中也包含vc的環境變量。所以想在python中直接先調用一下現有腳本再執行編譯命令,但發現沒效果。原因據說是os.system是獨立的進程,環境變量的修改對后面的語句不生效。
os.system(
'
call "../../set_vs_env.bat"
')
os.system( ' devenv '+ name+ ' .sln /project '+ name + ' .vcproj /Rebuild "debug|win32" /Out '+ name + ' .cmp>nul ')
os.system( ' devenv '+ name+ ' .sln /project '+ name + ' .vcproj /Rebuild "debug|win32" /Out '+ name + ' .cmp>nul ')
所以只能2個cmd命令放到一個調用中執行,也就是一次執行多個cmd,cmd命令間用&符連接。
cmd =
'
call "../../set_vs_env.bat" &
' +
'
devenv
'+ name+
'
.sln /project
'+ name +
'
.vcproj /Rebuild "debug|win32" /Out
'+ name +
'
.cmp>nul
'
os.system(cmd)
os.system(cmd)
