我正在嘗試使用msbuild和Visual Studio命令中提供的其他命令從另一個Visual C++程序(project2)編譯並運行一個visual C++程序(project1)而不是在Windows命令行工具中。一切工作正常,如果我在Visual Studio命令行工具中運行它。例如,我可以使用msbuild來構建,它可以像我希望的那樣工作。當我嘗試使用system()在我的C++程序中運行相同的命令時,系統調用似乎使用Windows命令行,因此找不到任何命令(本例中爲msbuild)。我對在windows上使用system()很陌生(儘管我使用Linux有豐富的經驗)。當我調用system(而不是Windows命令行環境)時,是否有某種方法可以讓我的C++程序使用Visual Studio命令行環境? 手動使用命令窗口不是一個選項。我需要在project1中編譯和測試一系列200-300個不同版本的程序。這就是爲什麼我要編寫程序2如何使用Visual Studio 2012命令行工具從系統()
0
A
回答
1
從命令行獲得Visual Studio的關鍵是設置合適的環境。您可能安裝了多個不同的VS版本,因此您需要指定使用哪一個版本。這樣做最簡單的方法可能是具有一定程度的間接性,您可以在其中生成一系列命令來設置所需的環境,並將其寫入批處理文件,然後調用system()
來運行該環境。
如果你看看<visual studio>\vc\bin
目錄,那麼你會發現一個文件vcvars32.bat
。這爲設置特定工具集的環境提供了很多魔力。我想,那麼你可以生成一個批處理文件是這樣的:
call path\to\visualstudio\vc\bin\vcvars32.bat
msbuild myproject
請注意,您所需要的call
語法來調用從另一個批處理文件,否則會導致外殼有來無回。
1
- 通過查找以下注冊表項中找到msbuild.exe: HKEY_LOCAL_MACHINE \ SOFTWARE \微軟\的MSBuild \ ToolsVersions \ 4.0 \ MSBuildToolsPath
- 呼叫路徑\使用從上面 註冊表項的路徑msbuild.exe
這種方法不需要知道Visual Studio的路徑,實際上即使沒有安裝MSVS也可以工作 - [免費] .NET SDK 4.0就足夠了。
下面是一個例子代碼將定位msbuild.exe並運行它:
#include "windows.h"
#include "winreg.h"
#define MAXSZ 1024
int _tmain(int argc, _TCHAR* argv[])
{
HKEY key;
TCHAR path[MAXSZ];
DWORD dwSize = MAXSZ;
long result;
result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\4.0"), 0, KEY_QUERY_VALUE, &key);
result = RegQueryValueEx(key, _T("MSBuildToolsPath"), 0, NULL, (LPBYTE)path, &dwSize);
wcscat_s(path, MAXSZ, _T("msbuild.exe"));
_wsystem(path);
return 0;
}
0
關於使用其中的一個呢?
%windir%\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe
%windir%\Microsoft.NET\Framework\v3.5\MSBuild.exe
%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
相關問題
- 1. Visual Studio 2012從命令行發佈
- 2. 從Visual Studio的構建後命令行運行Linux子系統
- 3. Visual Studio 2012命令行編譯器
- 4. Visual Studio 2012命令行生成
- 5. Visual Studio 2012工具欄
- 6. 如何從Visual Studio運行Grunt命令?
- 7. 如何爲Visual Studio 2017安裝TFS命令行工具
- 8. 如何使用Visual Studio從命令行運行OpenCL程序?
- 9. 如何使用Visual Studio 2012
- 10. 如何使用Visual Studio 2012和NUnit命令行工具生成代碼覆蓋率報告?
- 11. SQL Server Management Studio 2012/ALL工具通過命令行安裝
- 12. 如何在Visual Studio 2012的命令行上將ASP.NET網站或Web應用程序發佈到文件系統
- 13. 如何使用curl命令行工具
- 14. 如何從命令行使用Visual Studio 2010 RC'單擊'發佈'?
- 15. Visual Studio 2012中的命令參數C
- 16. 如何在命令行上使用Visual Studio 2012構建報表項目?
- 17. 軌如何從軌道運行系統命令命令安全
- 18. Visual Studio外部工具發送命令到命令提示符
- 19. 從命令行運行Profiler與Visual Studio
- 20. 使用Visual Studio命令提示符工具到處
- 21. 如何從VB .net插入/運行Windows命令(ping,getmac,vmic等) - Visual Studio 2012
- 22. 在Visual Studio 2012中執行命令,如在makefiles中
- 23. 如何在Visual Studio 2010中的文件系統更改上運行命令?
- 24. 網站管理工具在Visual Studio 2012
- 25. 的Visual Studio 2012平臺工具集v110_xp
- 26. 爲Visual Studio 2012(PTVS)安裝Python工具
- 27. 如何在visual studio命令行工具的開始運行腳本?
- 28. 如何使用Git的Visual Studio工具
- 29. 安裝了Visual Studio工具後的Windows上的Cordova命令行
- 30. Visual Studio 2012/TFS 2012 - 配置系統初始化失敗