4

这个可能有点奇怪。我在Visual Studio 2010中有三个C++项目的解决方案。两个库和一个可执行应用程序。两种配置。在一种配置中,我需要可执行应用程序对一个库具有项目依赖关系,而在其他配置中,我需要可执行应用程序对其他库具有项目依赖关系。如何使Visual Studio 2010项目依赖项成为特定于配置的?

具体而言,第一个库中有一个Direct3D9实现,第二个库中有一个OpenGL实现。第三个项目是为两者使用相同接口的测试工具,唯一的区别是它链接到哪个库。测试工具项目中存在两种配置,每种配置都有一种配置。我无法将测试工具项目设置为基于活动配置分别依赖于每个实现库。

如何使项目依赖项配置特定?

回答

3

是C++项目格式msbuild?如果是这样,你应该能够在参考文献中加入条件。参考两个项目,然后编辑项目文件并在每个项目上添加条件。这是它是如何在C#项目工作,不知道C++是一样的:

<ProjectReference Include="..\DirectXLib\DirectXLib.csproj" Condition=" '$(Configuration)' == 'DirectX' "> 
    <Project>{99999-9999-9999-9999-99999999999}</Project> 
    <Name>DirectXLib</Name> 
</ProjectReference> 
<ProjectReference Include="..\OpenGLLib\OpenGLLib.csproj" Condition=" '$(Configuration)' == 'OpenGL' "> 
    <Project>{99999-9999-9999-9999-99999999999}</Project> 
    <Name>OpenGLLib</Name> 
</ProjectReference> 
+0

完美,我认为这将需要一些非IDE项目的修改。我能够通过IDE添加参考,然后手动编辑文件以使用必要的条件。谢了哥们。 – 2010-11-09 19:59:22

0

我认为配置管理器的目的只是为了你所问的,不是吗?

在解决方案级别指定要构建的配置,并且对于每个配置,可以指定要构建的项目以及按何种顺序。并且在每个项目的设置中,您可以指定要包含哪些库以及一大堆你想要做的其他事情。

+0

问题是项目依赖项不能是特定于配置的,至少不能通过Visual Studio的IDE。 – 2010-11-09 20:00:05

0

一招,这似乎从IDE工作:

  • 让这两个库也有一个配置不曾用过;

  • 在NOT_USED配置中将库的配置类型(在Common Properties:General:Project Defaults中)设置为Application(.exe)。

这将VS认为他没有一个lib作为这些项目的结果,因此不提供链接错误。

相关问题