我正在与另外两个基于FireBreath构建的开发人员合作开发一个项目。到目前为止,我已经能够在我的机器上完美地工作,但我们需要通过Mercurial协调我们的开发。所以我将文件推送到存储库,并认为一切都很顺利。
不幸的是,这不起作用。
构成解决方案的各种.vcproj
文件都包含对本地文件系统的硬编码引用。这对我来说很好,因为我没有移动项目。但是,当您尝试在另一台具有不同文件结构(不同驱动器号,不同文件夹位置等)的计算机上构建解决方案时,一切都会中断。
我使用FireBreath的标准项目生成脚本(Python),然后使用Visual Studio CMake脚本(prep2008.cmd)生成解决方案文件。我可以做些什么来调整事情,以便其他开发人员可以使用相同的代码库?
答案 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)
我看到3个选项:
与之共存。这意味着,确保每个团队成员具有相同的文件结构/视图,文件系统,安装在同一位置的工具。
要求FireBreath的作者更改他们的.vcproj生成器以允许相对路径,使用环境变量等。
如果1或2不起作用,请编写程序或脚本以更改这些.vcproj文件中亲属的绝对路径。每当您必须重新生成FireBreath项目时,请运行此脚本。
由于FireBreath FAQ而不应该做的事情:不要手动更改.vcproj,这些更改将在下次重新生成项目时丢失。
编辑:似乎是“选项4”。结果是最好的解决方案:为每个开发人员单独生成.vcproj
个文件。希望我的建议也有帮助。