2010-11-19 42 views
0

我正在与另外两个开发人员一起构建FireBreath的项目。到目前为止,我已经能够在我的机器上完美地工作,但我们需要通过Mercurial协调我们的开发。所以我推送我的文件到存储库,并认为一切都很好。多个开发人员如何使用相同的vcproj文件?

不幸的是,这是行不通的。

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

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

回答

3

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

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

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

仅供参考,我FireBreath的主要作者,我写的文章。

0

编辑:我重写了我的anyswer,使其更清晰。当我正确地得到你的时候,你的问题是FireBreath会生成那些带有绝对路径的.vcproj文件,并且你想在不同的开发人员机器上使用这个.vcproj文件。

我看到3个选项:

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

  2. 问FireBreath的作者改变自己的.vcproj发生器允许相对路径,使用环境变量等

  3. 如果1或2不工作的,写一个程序或脚本改变的绝对路径到那些.vcproj文件中的亲属。每当必须重新生成FireBreath项目时运行此脚本。

你不应该做,由于FireBreath FAQ什么:不要手动更改的.vcproj,这些更改将丢失在下一次项目再生。

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

+0

然后当您需要将一个开发人员切换到另一个项目时,您会做什么?重新安装他的整个机器? – sbi 2010-11-20 21:46:50

+0

那么,我从来没有遇到过不同项目的文件结构完全不兼容的情况。如果我的建议是适用的,很大程度上取决于你工作的组织类型。 – 2010-11-21 06:52:00

2

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

5

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

有两种方法可以解决不同设置上不同设置的问题。一种是相对于项目路径制作所有路径。另一种是使用环境变量来引用文件/工具/库/任何。 IME最好使用相对路径来处理可以用项目检出的所有内容,并为其余部分使用环境变量。添加一个脚本,用于检查是否存在所有必需的环境变量,指出缺少的所有环境变量的含义,并将其作为构建必备条件来运行,这样任何试图启动并运行新构建机器的人都会知道该怎么做。

+0

我喜欢自我记录构建的想法。 – shambulator 2010-11-20 20:11:15

+0

@sbi:您完全忽略了这些.vcproj文件是使用FireBreath生成的事实。 – 2010-11-21 06:48:57

+0

@Doc:哦。我不知道FireBreath。它有什么作用? – sbi 2010-11-21 09:34:07

相关问题