0

我正在与其他两个开发人员一起开发一个基于FireBreath的项目。到目前为止,我已经能够让事情在我的机器上完美运行,但我们需要通过 Mercurial 来协调我们的开发。所以我将我的文件推送到存储库,并认为一切都很好。

不幸的是,这不起作用。

构成解决方案的各种.vcproj文件都包含对我的本地文件系统的硬编码引用。这对我来说很好,因为我没有移动项目。但是,当您尝试在具有不同文件结构(不同驱动器号、不同文件夹位置等)的另一台机器上构建解决方案时,一切都会中断。

我使用 FireBreath 的标准项目生成脚本 (Python) 和 Visual Studio CMake 脚本 (prep2008.cmd) 来生成解决方案文件。我可以做些什么来调整一些东西,以便其他开发人员可以使用相同的代码库?

4

4 回答 4

5

如果您的开发人员没有使用相同的构建/制作/项目文件,这可能很快成为维护的噩梦。所以你应该明确地使用相同的.vcproj文件。(如果项目文件是从其他文件生成的,则例外情况。在这种情况下,请按照上述方式处理这些其他文件。)

有两种方法可以处理不同机器上不同设置的问题。一种是使所有路径都相对于项目的路径。另一种是使用环境变量来引用文件/工具/库/任何东西。IME 最好对项目中可以签出的所有内容使用相对路径,其余部分使用环境变量。添加一个脚本来检查所有必要的环境变量是否存在,指出任何缺失的环境变量的含义,并将其作为构建先决条件运行,因此任何尝试启动和运行新构建机器的人都会得到提示。

于 2010-11-20T16:30:51.520 回答
3

为了确保每个人都能从 sbi 的答案中获得更新的评论,让我给你 FireBreath 开发人员的“确定”答案。

您的构建目录是一次性的;你不应该共享.vcproj 文件。相反,您应该在每次更改项目时和在每台新计算机上重新生成 build/ 目录,就像使用 CMake 的任何项目一样。

有关更多信息,请参阅http://colonelpanic.net/2010/11/firebreath-tips-working-with-source-control/

作为参考,我是 FireBreath 的主要作者,我写了这篇文章。

于 2010-12-02T07:19:40.290 回答
2

我不熟悉 FireBreath,但您需要使引用相对,然后在每台机器上重新创建该相对结构。也就是说,如果您的项目位于“c:\myprojects\thisproject”中并且有一个额外的包含目录“c:\mydir\mylib\include”,那么后面的路径需要替换为“....\mydir\我的库\包括”。

于 2010-11-19T21:56:28.800 回答
0

编辑:我重写了我的答案以使其更清楚。当我正确理解您时,您的问题是 FireBreath 生成了那些带有绝对路径的 .vcproj 文件,并且您想在不同的开发人员机器上使用这些 .vcproj 文件。

我看到 3 个选项:

  1. 忍受它。这意味着,确保每个团队成员对文件系统具有相同的文件结构/视图,工具安装在同一个地方。

  2. 要求 FireBreath 的作者更改他们的 .vcproj 生成器以允许相对路径、使用环境变量等。

  3. 如果 1 或 2 不起作用,请编写一个程序或脚本来更改这些 .vcproj 文件中的相对路径的绝对路径。每当您必须重新生成 FireBreath 项目时运行此脚本。

由于FireBreath 常见问题,您不应该做的事情:不要手动更改 .vcproj,这些更改将在下次重新生成项目时丢失。

编辑:似乎是“选项 4”。结果证明是最好的解决方案:.vcproj为每个开发人员单独生成这些文件。希望我的建议也有帮助。

于 2010-11-19T21:55:34.827 回答