2009-11-13 144 views
2

我的问题的简短版本是如何更改我的解决方案中项目的构建顺序,而不必强制将一个项目设置为另一个项目的依赖项?Visual Studio 2005项目构建顺序不使用项目依赖项

在我的解决方案,我有2个项目:

1)用C语言编写
2)含有使用可爱的框架单元测试静态库的可执行文件。

我有4种生成配置:

1)调试 - 我想只有在调试模式下的exe。静态lib项目是未选中的,所以它不会生成。
2.)发布 - 我只想要exe在发布模式。静态lib项目是未选中的,所以它不会生成。
3.)使用单元测试进行调试 - 需要构建静态库,然后是exe,因为它依赖于这种情况下的lib。
4.)发布单元测试 - 同上#3,只是在发布。

因为可执行文件不依赖于解决方案中的其他libs和dll,所以在链接器设置中列出了所有这些附加依赖项。在单元测试构建配置中,我已将静态库也包含在可执行文件的依赖列表中。

现在,这是蹭。到目前为止,我发现修改构建顺序并确保静态库是在exe之前构建的唯一方法是右键单击解决方案并选择构建顺序。在那个对话框中,它说我必须使用依赖关系选项卡来更改构建顺序。这是有道理的。但是,如果我将可执行文件标记为依赖于静态库,它会自动添加静态库作为可执行文件的链接器依赖项。这对于单元测试版本配置很好。然而,在非单元测试版本配置中,它会尝试链接到静态库中,如果在构建之前完成了清理,它已经被删除并且无法链接,因为我没有将它构建到那些库中配置(我也不希望它在这些情况下链接)。

这样说,有没有办法改变构建顺序而不标记依赖关系?我想要设置单元测试配置的构建顺序,以确保静态库是先构建的。

回答

3

您可以禁用自动列入库的依赖关系。

在你的exe文件的属性页:

链接器 - >常规 - >链接库的依赖 - >无

这允许你指定项目的依赖关系,因此没有被链接的静态库构建顺序

+0

非常感谢。我之前没有注意到这个设置。这是完美的。 – 2009-11-13 19:01:01

+0

如何在VS2013中找到链接器选项? – CamHart 2016-02-08 21:58:27

1

我会看看NAnt。建立一个ant脚本来解决你的问题是可能的。

http://nant.sourceforge.net

+0

我发现NAnt是一个选项,但是由于目前没有在我的团队中使用它,因此如果以后需要在此项目中工作,则会强制团队的其他成员进行安装。我肯定会看看它,因为它看起来很有帮助。 – 2009-11-13 19:04:07

0

'Per configuration dependencies'可能是一个答案。它将允许指定该lib是可执行文件的依赖项,仅用于配置,这是有意义的。

+0

你的建议正是我想要的,但我还没有看到在每个配置中设置VS之间的项目间依赖关系的方法。这就是为什么我把所有的libs/dll放在每个配置的Linker-> Input-> Additional Dependencies上。上面的Soo Wei Tan的建议在这个设置中很有效。 – 2009-11-13 19:08:11

相关问题