我几乎没有任何好的请求谷歌找到答案。我有一个Visual Studio(2012)项目,这个项目是在git上版本化的(这个文件版本为*: vcxproj )。我想在项目中使用Boost库,所以我必须为它设置位置,但这种方式会改变 vcxproj ,所以另一个人将不得不为他的电脑更改它等等。如何在不从版本控制中删除此文件的情况下解决此类问题?
*我在这里读到:.vcxproj in source control该文件应该是版本的。
答案 0 :(得分:0)
在版本控制方案中经常出现此问题:文件的某些部分取决于本地环境,这些部分不应受版本控制。有两种主要方法可以解决这个问题:
假设一致的本地环境
仅将文件的那些部分置于版本控制之下,这些部分独立于本地环境而有效。创建一个脚本,将依赖于本地环境的部分添加到该文件的 unversioned 副本。
我看到了这个特定问题的三种解决方案:
同意安装Boost的常用位置。由此,“另一个人”将不必修改他的.vcxproj
文件副本。
使用Visual Studio解决方案中的符号链接引用Boost。与1相同的逻辑。
创建一个复制.vcxproj
文件的脚本,并将对Boost的引用添加到该副本。请参阅.vcxproj
文件中已复制的.sln
文件,但 将其添加到Git中 - 将其添加到.gitignore
。这是处理此类问题的最通用方法,但在实践中也难以处理 - 实际上对.vcxproj
文件进行修改现在需要额外的工作。
答案 1 :(得分:0)
对于boost,我将它直接添加到我的全局include / libraries路径中。对于此方法,请转到属性管理器窗口,然后展开任何C ++项目并选择Microsoft.Cpp.XXX.user并选择属性。这将为您提供一个项目属性表,该属性表适用于您帐户中该平台的所有项目。在此工作表中,您可以修改VC ++目录选项卡以添加适当的路径。
对于较少的“全局”库,我指定一个已知目录来保存属性表,其中包含使用特定库的其他编译器设置。这些将保存包含和库路径,但也可以具有其他设置,如定义和链接器输入。我个人使用'C:\ SDKs'作为指定目录。所以我可能会有'C:\ SDKs \ DirectX11-x86.props'之类的东西。这种方法最大限度地减少了需要硬编码的内容,并且允许比仅包含/库路径更多的选项。一个警告:你必须确保路径是绝对的,视觉工作室喜欢使它们相对。
答案 2 :(得分:0)
一种选择是在代码树中包含boost,这样就不会在机器上安装boost的外部依赖,这也会降低设置开发机器的要求。
由于boost是开源的并且可以在GitHub上使用(https://github.com/boostorg),因此您应该可以使用git submodules进行映射。
另一种选择是使用boost Nuget package