我们正在使用英特尔C ++编译器来提高C ++代码的性能。为了使用它,我们需要通过IDE将我们的visual studio项目转换为intel项目。由于英特尔编译器并未安装在任何地方,因此我们仅在需要创建英特尔版本的机器上执行此步骤。
我们希望探索一种通过某些脚本自动执行此转换过程的方法。我们想知道我们是否可以使用EnvDTE API来做同样的事情。
到目前为止,我们已经能够在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项目转换为使用英特尔编译器。
是否可以自动执行此转换?
提前致谢。
答案 0 :(得分:0)
为了那些可能偶然发现的人的利益 - 您可以使用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
答案 1 :(得分:0)
通过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参考IntelCppOptPkg.dll此外,还有一个转换工具,位于“\ Common Files \ Intel \ shared files \ ia32 \ Bin \ ICProjConvert.exe”。 有关使用key /?的工具的帮助信息?或者URL
中找到所需的一切