2010-01-22 67 views
1

我正在使用Visual Studio 2008.VC++项目从未更新

我有两个项目的解决方案。一个生成一个DLL,这是我的“生产代码”。另一个构建一个控制台应用程序exe,这是我的单元测试套件。

对于我的单元测试项目,我已经列出了链接器输入来自DLL的源模块的名称。也就是说,我在DLL项目中有一个DLLMain.cpp,在exe项目中有一个链接器输入“DLLMain”。这使得exe可以链接DLL项目生成的obj文件,从而防止仅为单元测试重新编译这些模块。 (节省大量的编译时间。)

问题是因为exe比obj的产生时间晚,并且由不同的项目产生,所以它的时间戳总是比obj的更新。所以当你尝试运行或调试时,它总是说exe文件已经过时,需要重新编译。

有没有什么办法可以配置exe项目来忽略时间戳?或者有没有其他的,也许更一般的解决方案,我没有看到这里?

+1

“问题在于,因为exe的生成时间晚于obj,而且由不同的项目生成,所以它的时间戳始终是始终不变的比ob更新j's ...“ - 我认为结论并不完全正确,如果构建正确,objs文件将永远比.exe/.dll更早; objs比exe更新会表示需要重新链接;就像源文件比objs更新会表明需要重新编译一样。 – Ruddy 2010-01-23 00:51:45

回答

0

似乎你正在DLL的项目中创建foo.obj,链接DLL项目中的foo.obj以生成DLL,然后将foo.obj链接到EXE项目,而无需首先重新编译它。

我从来没有这样做过,但我要检查的第一件事是确保EXE项目和DLL项目中的中间目录设置是相同的。

-1

去那个不需要进行单元测试项目
右键单击它,然后按属性
单击配置管理器
使用第一个下拉列表
单击确定
选择添加一个新配置然后在配置属性集“从构建中排除”设置为是

+0

我不确定你的答案的目标是什么......我不想要两个独立的构建目标。我想要一个构建我的生产DLL和我的单元测试的配置。我目前有这个,但单元测试项目永远不会是最新的。 – gg3 2010-02-01 12:04:25