【问题标题】:Build problems with Visual C++ project after checking in and checking out from CVS从 CVS 签入和签出后生成 Visual C++ 项目的问题
【发布时间】:2009-12-22 07:58:05
【问题描述】:

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

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

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

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

提前致谢。

【问题讨论】:

  • 是的。我也检查了 .vcproj 文件。正如我提到的,Windiff 显示文件夹之间没有区别。
  • 只是为了澄清我的基本查询是 VC++ 是否仅将解决方案的属性表数据存储在 .sln 文件中?还是需要其他文件?
  • 更新 - 如果我将文件夹复制到另一个地方,构建工作正常。我几乎确信这与 cvs 签入/签出有关。

标签: windows visual-c++ 64-bit cvs solution


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我认为问题可能是在您更改了一个构建配置(例如 x86-Release)中的设置但忘记为另一种配置(例如 ia64-Debug)更改它们之后,并且当配置更改时,您有这个问题。

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

    【讨论】:

    • 关于#1,问题当前出现在相同的配置(版本|x64)中。我签入 x64 并仅签出并重建 x64。 #2 所有项目的项目依赖项都相同。
    【解决方案3】:

    您是否有任何以 ASCII 格式签入的二进制文件?

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

    有关详细信息,请参阅CVS FAQ 中的二进制部分。

    【讨论】:

    • 我不这么认为。无论如何,构建失败的原因是因为依赖库是在与主程序中指定的文件夹不同的文件夹中构建的。
    猜你喜欢
    • 1970-01-01
    • 2019-09-10
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多