0

我正在构建一个跨平台产品,其中一个要求是跨 Windows(win32、AMD64 和 IA61)。该产品是相对简单的 CLI,但我们有一个单独的构建团队,他们从 CVS 中检查代码并在单独的构建环境中构建。我能够在一个平台(AMD 机器)上成功构建(使用 Visual C++ 2005)。但是一旦我签入代码,就会发现构建失败。

构建失败的原因是因为在属性表中错误地指定了包含库路径。特别是属性页中链接器下的输出文件夹指定错误。因此,这些库构建在与其他项目所期望的不同的文件夹中。

但是,与源一起,我也每次都签入 .sln 文件(以及后来的 .vcproj 文件)。Morover,如果我在构建不成功的文件夹中打开 .sln 文件,那么我可以成功构建(预签入)的文件夹没有区别。事实上,使用 windiff 我看不出两个构建文件夹之间的任何区别(除了一些 .ncb 和 cvs 日志文件)。

所以知道发生了什么吗?VC++ 2005 在哪里获取包含目录,如果不是从 .sln 获取输出文件夹路径?CVS 是否以某种方式干扰了该过程?还有什么我可以尝试的。

提前致谢。

4

3 回答 3

1

刚更新问题就解决了。根本原因是没有在 CVS 中检查 .vcproj 文件!这是存储单个项目设置的地方(我的印象是这是在 .sln 文件中完成的)。

于 2010-03-09T07:52:54.640 回答
0

我认为问题可能是在您更改了一个构建配置(例如 x86-Release)中的设置但忘记为另一种配置(例如 ia64-Debug)更改设置后,当配置更改时,您会遇到此问题。

我要检查的另一件事是项目依赖项。如果这些设置以正确的方式设置,VS 将在输出位置准确查找项目输出,即使您更改了输出文件夹也是如此。

于 2009-12-22T08:26:07.673 回答
0

您是否有任何作为 ASCII 签入的二进制文件?

往返 CVS 可能会损坏被错误标记为 ASCII 的二进制文件,因为 CVS 对 ASCII 文件执行字符处理(例如,为您的操作系统提供正确的行尾代码)。即使在全 Windows 环境中也可能发生损坏。

有关详细信息,请参阅CVS 常见问题解答中的二进制部分。

于 2009-12-22T09:48:47.850 回答