我的问题的简短版本是如何在不强制将一个项目设置为另一个项目的依赖项的情况下更改解决方案中项目的构建顺序?
在我的解决方案中,我有两个项目:
1。)用C写的可执行文件 2.)包含使用CUTest框架的单元测试的静态库。
我有4个构建配置:
1。)调试 - 我只想在调试模式下执行exe。静态lib项目未被选中,因此不会构建 2.)发布 - 我只想在释放模式下执行exe。静态lib项目未被选中,因此不会构建 3.)使用单元测试进行调试 - 想要构建静态lib,然后是exe,因为在这种情况下它依赖于lib 4.)发布单元测试 - 同上#3,刚刚发布。
因为可执行文件依赖于解决方案中没有的其他lib和dll,所以我在链接器设置中列出了所有列出的附加依赖项。在单元测试构建配置中,我还有可执行程序依赖列表中包含的静态库。
现在,这就是问题。到目前为止我发现的唯一方法是更改构建顺序并确保在exe之前构建静态lib是右键单击解决方案并选择构建顺序。在该对话框中,它表示我必须使用依赖项选项卡来更改构建顺序。这是有道理的。但是,如果我将可执行文件标记为依赖于静态lib,它会自动将静态库添加为可执行文件的链接器依赖项。这适用于单元测试构建配置。然而,在非单元测试构建配置中,它尝试链接到静态库中,如果我在构建之前已经完成了清理,则已被删除且无法链接,因为我不在那些中构建它配置(在这些情况下我也不想将它联系起来)。
话虽如此,有没有办法在不标记依赖关系的情况下更改构建顺序?我想设置单元测试配置的构建顺序,以确保首先构建静态库。
答案 0 :(得分:3)
您可以禁用自动包含库依赖项。
在你的exe的属性页面中:
链接器 - >一般 - >链接库依赖关系 - >否强>
这允许您指定项目依赖项,从而构建顺序而不链接静态库。
答案 1 :(得分:1)
我会看看NAnt。可以构建一个ant脚本来解决您的问题。
答案 2 :(得分:0)
'Per configuration dependencies'可能是一个答案。它将允许指定lib是可执行文件的依赖项,仅用于有意义的配置。