我有一个包含两个 C++ (CLR) 项目的解决方案。一个项目引用另一个项目,因此项目依赖项和构建顺序正确反映了这一点。两个项目都针对相同的输出文件夹。依赖项目的依赖配置为Copy Local: false
.
如果我自己“重建”依赖关系,它会构建得很好并且它的目标位于输出目录中。
当我“重建”解决方案(或依赖项目)时,我得到:
error LNK1181: cannot open input file '<outdir>\Dependency.lib'
果然,依赖项输出从输出目录中消失了。如果我查看构建日志,依赖项似乎已正确(重新)构建,但是一旦依赖项目构建开始,这些输出似乎就被删除了。为什么会发生这种情况?
此外,当我“清理”解决方案,然后立即“构建”解决方案时,我不会收到任何错误。
难道“重建”实际上不应该是“清理+构建”吗?
Visual Studio 中的重建会逐个清理和构建项目,因此最终可能发生的情况是
- 项目 A 已清理。
- 项目A已编译。
- 项目 B 已清理,由于输出目录相同,因此删除了项目 A 的部分输出。
- 项目 B 由于缺少依赖项而构建失败。
更多讨论here https://stackoverflow.com/questions/1247457/difference-between-rebuild-and-clean-build-in-visual-studio-2008.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)