2

我使用 Visual Studio 2010 Express 已经有一段时间了,并且玩过一些大型项目已经有一段时间了。由于我接近 50-60 个文件和数千行代码,因此我决定对所有内容进行一些源代码控制,以便项目更容易在我的所有设备之间更新和访问,同时也可以备份。

我以前使用过 git 并且对它很满意,但是现在当我提交并将其推送到 bitbucket.org 上的远程存储库时,我发现 .vcxproj 文件在保留正确文件结构的同时也保留了包含和它从中推送的设备的 lib 目录,这意味着当下拉到另一台计算机时,那些 include/lib 目录将在错误的目录中查找,这意味着我每次拉/推时都必须修改所有这些目录。

我的问题,无论如何我可以将文件推送到存储库,以便解决方案保留文件夹设置,而不是包含和 lib 目录设置?

编辑:

经过一些研究,我在 Visual Studio 中查看了这些所谓的属性表,这些文件可以添加到您的项目中。您设置的设置优先于项目的设置,但是如果您将单个属性文件添加到项目中然后推送 .sln 文件以及没有该 .props 的各种 .vcxproj 文件,则会出现障碍文件,然后其他人从存储库中克隆,它不会打开,因为它显然需要该道具文件。

我想要的是远程存储库中的默认 .props 文件,当克隆过来时,不再跟踪该文件,然后该用户可以自己编辑它。我对 git 的了解还不够,无法做到这一点。有人有想法吗?

4

2 回答 2

1

我不确定您的问题到底是什么,但这是我的理解:

  1. 您的项目文件包含绝对路径(例如“C:\myproj\include”)。将这些替换为相对路径(例如“.\include”)。"$(SolutionDir)" 变量有帮助:如果您的解决方案文件是 C:\myproj\myproj.sln,则 "$(SolutionDir)include" 与 "C:\myproj\include" 相同。您可以分别在 Project Properties > Configuration Properties > C/C++ 和 Linker 中更改包含和库目录。

  2. 你的项目需要第三方库——比如 boost——而这些在你的项目之外,比如 C:\boost。不幸的是,Windows/VS 没有第三方库的标准位置,因此您可以:

    • 将库包含在您的项目中。这对于小型库来说非常好,但它不是您想要使用诸如 boost 之类的东西,它既大又趋于广泛使用。
    • 要求所有设备在同一位置设置这些库,例如 C:\sdk
    • 在项目中使用环境变量,如$(SDK_DIR),所有设备都必须设置该环境变量。

让我知道这是否有帮助。

于 2013-02-06T00:01:30.583 回答
0

你所追求的是 git 的涂抹和清洁过滤器。您必须为清理编写一个脚本,但 sed 可能会很好地完成这项工作,您不需要真正的 xml 解析。

于 2013-02-06T00:15:40.790 回答