多个开发人员如何使用相同的vcproj文件?

时间:2010-11-19 21:50:55

标签: mercurial cmake vcproj firebreath

我正在与另外两个基于FireBreath构建的开发人员合作开发一个项目。到目前为止,我已经能够在我的机器上完美地工作,但我们需要通过Mercurial协调我们的开发。所以我将文件推送到存储库,并认为一切都很顺利。

不幸的是,这不起作用。

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

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

4 个答案:

答案 0 :(得分:5)

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

有两种方法可以解决不同机器上不同设置的问题。一种是使所有路径 相对于项目的路径 。另一种是使用 环境变量 来引用文件/工具/库/等等。 IME最好使用相对路径来查看可以通过项目检出的所有内容,并使用环境变量来完成剩下的工作。添加一个脚本,检查是否存在所有必需的环境变量,指出任何缺失的环境变量的含义,并将其作为构建先决条件运行,因此无论是谁试图使新的构建机器运行起来都会得到提示。

答案 1 :(得分:3)

为了确保每个人都能从sbi的答案中获得更新的评论,请让我向FireBreath开发人员提供“明确的”答案。

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

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:0)

编辑:我改写了我的答案以使其更清晰。当我找到你的时候,你的问题是FireBreath生成那些带有绝对路径的.vcproj文件,并且你想在不同的开发者机器上使用这个.vcproj文件。

我看到3个选项:

  1. 与之共存。这意味着,确保每个团队成员具有相同的文件结构/视图,文件系统,安装在同一位置的工具。

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

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

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

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