我们使用英特尔C++编译器来提高C++代码的性能。为了使用它,我们需要通过IDE将我们的visual studio项目转换成英特尔项目。由于英特尔编译器并不是安装在所有地方,因此我们只在需要创建英特尔版本的机器上执行此步骤。
我们想要探索一种方法,通过一些脚本来自动化这个转换过程。我们想知道我们是否可以使用EnvDTE应用程序接口来做同样的事情。
到目前为止,我们已经能够在VBScript中访问到以下内容:
Dim objDTE
' Creates an instance of the Visual Studio
Set objDTE = CreateObject("VisualStudio.DTE")
' Make it visible
objDTE.MainWindow.Visible = True
' Open a .sln file
objDTE.Solution.Open("Path to solution file")
Dim sol
Set sol = objDTE.Solution.SolutionBuild
此时,我们可以像这样调用函数:
sol.Clean
sol.Build
它们运行得很好。
除此之外,我们找不到一种方法来识别可以应用于解决方案的其他命令。例如,英特尔C++编译器将自身作为插件集成到Visual Studio中。我们想知道是否可以找出一种方法来识别可用于解决方案对象的命令列表,然后执行适当的命令来将visual studio项目转换为使用英特尔编译器。
是否有可能自动执行此转换?
提前谢谢。
发布于 2011-04-27 17:27:54
出于那些可能会遇到同样情况的人的兴趣,您可以使用DTE.ExecuteCommand来运行任意命令,包括那些通过扩展公开的命令。要打印出所有可用命令的列表,可以运行以下VBScript:
Set DTE = CreateObject("VisualStudio.DTE.10.0") ' adjust version as needed
For Each cmd In DTE.Commands
WScript.Echo cmd.Name
Next
发布于 2011-10-17 10:52:55
通过DTE实现的COM自动化如下所示:
/// Intel convertion
Project proj;
proj = DTE.Solution.Projects.Item(1) // Should be vc++ one
ProjectConversions pconv = (ProjectConversions)EnvDTE.GetObject("PrjConvert");
pconv.EnableUsingIntelCppCompiler(prj1.Name);
您只需添加来自/Common7\IDE\PublicAssemblies的.NET reference IntelCppOptPkg.dll
此外,还有一个转换工具,位于“\通用文件\英特尔\shared files\ia32\Bin\ICProjConvert.exe”。A有关key /提供的工具的帮助信息?或者通过URL
您需要的几乎所有内容都可以在MSDN automation documentation中找到
https://stackoverflow.com/questions/5109693
复制