【发布时间】:2010-02-17 20:47:19
【问题描述】:
我想覆盖 Visual Studio (devenv.exe) 用于编译器和库路径的目录。我知道如何通过工具->选项->VC++ 目录以交互方式执行此操作,但我想自动执行此操作。
http://msdn.microsoft.com/en-us/library/t9az1d21(VS.80).aspx 对此有一个诱人的注释:“如果您想设置目录搜索路径(为您的项目),可以由其他用户共享或可以跨多台计算机应用,Visual C++ 提供了一个替代方案使用此对话框,通过项目属性表。有关详细信息,请参阅属性表 (C++)。"
如果您点击“属性表”文档的链接,会有大量关于机制的信息,但没有关于您需要设置的实际属性的信息。
我在 %LocalAppData%\Microsoft\VisualStudio\8.0\VCComponents.dat 中找到了 VC++ 目录对话框填充的信息(对于 VS 2005,对于 VS 2008 是 9.0);它似乎在 VC\VC_OBJECTS_PLATFORM_INFO\win32\Directories 和 ...\x64\Directories 下设置了各种属性。
有没有人这样做过并且知道从 VCComponents.dat 中使用的属性名称到 .vsprops 文件中使用的名称的映射是什么?
理想情况下,我希望它在 VS2005、VS2008 和 VS2010 中工作。
在 VS2010 中,Microsoft 完全取消了视图选项下的 VC++ 目录对话框,而是按项目设置,因此现在您可以在项目属性而不是视图选项中获得用于编辑这些目录的交互式 UI;这也意味着属性管理器中有一个 UI;然后,如果您想按机器而不是像以前那样按项目进行更改,您只需按照您想要的方式设置一个属性表,并让您的所有项目都继承它。这听起来比旧方法有了很大的改进。以及一种直接的方式来做我想做的事。但仅在 VS2010 中。
不过,VS2005 和 VS2008 没有 UI 可以在项目或属性表中设置这些属性;我很乐意用手来做,但我不知道它应该是什么样子!
这是一个空的 VS 2005 .vsprops 文件:
<?xml version="1.0"?>
<VisualStudioPropertySheet
ProjectType="Visual C++"
Version="8.00"
Name="pathSettings"
>
</VisualStudioPropertySheet>
我安装了 VS 2010 并使用其整洁的新 GUI 来更改搜索目录;它看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup>
<ExecutablePath>C:\Test;$(PATH)</ExecutablePath>
</PropertyGroup>
</Project>
但是,这在 VS2005 中不能逐字执行——VS2005 拒绝加载它(抱怨没有找到 DTD/模式声明)。
我将它放入容器中,作为响应,VS2005 告诉我“根据父元素 'VisualStudioPropertySheet' 的内容模型,元素 'PropertyGroup' 是意外的。期望:工具,UserMacro。”工具和 UserMacro 是 MSDN 页面示例中显示的唯一内容 [drat - StackOverflow 不会让我作为新用户在此处放置超链接——“属性表工具 usermacro”的第一个 Google 搜索结果]——也许是那些VS2005 属性表中唯一合法的东西是什么?
【问题讨论】:
-
更多链接:- 属性表文档:msdn.microsoft.com/en-us/library/a4xbdz1e(VS.80).aspx - 关于 VS 2010 中的更改的文章:blogs.msdn.com/vsproject/archive/2009/07/07/vc-directories.aspx 我不知道在 .vsprops 文件中放入什么(VS2005 或 2008)或 .props 文件 (2010) 来完成与通过编辑 VCComponents.dat 来完成相同的事情,为每个构建平台设置或覆盖路径/包含/库搜索目录。
-
这似乎有帮助/相关(仍在处理中):stackoverflow.com/questions/142708/…
-
好的,如果只有 Tool 和 UserMacro 在那里工作,也许我必须找到正确的方法来使用 Tool 指令覆盖编译器的包含路径和链接器的包含路径。不过,这对可执行路径没有帮助,是吗?
-
我也在 MSDN 上交叉发布了这个问题:social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/…
-
嗯——它看起来越来越不像这是可能的但没有记录,并且越来越像文档中的那个短语只是一个玩笑,直到 VS2010 才真正可能。我知道 /useenv (通过环境变量设置你想使用的目录),但是一旦你想为多个平台(比如 x86 和 x64)构建它就会变得丑陋,因为你需要设置 exe 路径和 lib不同平台的路径不同。
标签: visual-studio-2008 visual-c++ visual-studio-2005