如何自动将visual studio项目转换为使用英特尔C ++编译器。

时间:2011-02-24 19:51:19

标签: visual-studio-2005 envdte

我们正在使用英特尔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项目转换为使用英特尔编译器。

是否可以自动执行此转换?

提前致谢。

2 个答案:

答案 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

您可以在MSDN automation documentation

中找到所需的一切