2013-02-05 163 views
2

我已经使用了visual studio 2010 express一段时间,并且在一段时间内玩过一些广泛的项目。由于我接近50-60个文件和数千行代码,因此我决定对一切做一些源代码控制,以便在我的所有设备之间更容易地更新和访问该项目,同时也备份。git和visual studio 2010 express

我已经使用过git,并且对它感到满意,但是现在当我提交并将它推送到位于bitbucket.org上的远程存储库时,我发现.vcxproj文件仍然保留其正确的文件结构,还保留了它被推送的设备的include和lib目录,这意味着当被下拉到另一台计算机时,那些include/lib目录会查找错误的目录,这意味着我必须每次修改/推。

我的问题,无论如何,我可以推送文件到存储库,使解决方案保持文件夹设置,但不是包括和lib目录设置?

编辑:

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

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

+0

恐怕这是不可能的。也许你可以在没有这些东西的情况下在pre-commit钩子的违规文件中设置版本?或者也许有一种方法来设置它们,以便它们包含本地配置(àla C),并将这些部分保存在非版本控制的文件中,由每个用户设置? – vonbrand

+0

不回答你的问题,但我喜欢用CMake生成视觉工作室项目。 CMake有很多优点。另外,我想向您展示一个cmake代码,该代码用于对生成的Visual Studio项目中的源文件进行排序:https://github.com/Andrepuel/ThirdParty.cmake#source-group-tree –

回答

1

我不知道你的问题到底是什么,但这里是我的理解:

  1. 你的项目文件中包含的绝对路径(如“C:\的Myproj \包括”)。将它们替换为相对路径(例如“。\ include”)。 “$(SolutionDir)”变量有助于:如果您的解决方案文件是C:\ myproj \ myproj.sln,那么“$(SolutionDir)include”与“C:\ myproj \ include”相同。您可以分别在项目属性>配置属性> C/C++和链接器中更改包含和库目录。

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

    • 将库包含在您的项目中。对于小型图书馆来说,这是完全正确的,但它不是你想要做的事情,比如boost,这很大并且被广泛使用。
    • 要求所有设备在同一位置设置这些库,例如C:\ sdk
    • 在项目中使用环境变量(如$(SDK_DIR)),并且所有设备都必须设置此环境变量。

让我知道,如果这有助于。

+0

实际上它们都是1和2.另一个项目需要某个项目中的某些文件,但问题是($ SolutionDir)是另一台机器上的另一个目录,但它所涉及的值与本机上保持不变。对于问题2,我确实需要提升,但我真的很想避免强迫它们在每台机器上位于相同的路径名称中。 – FatalCatharsis

0

你在追求的是git的污迹和干净的过滤器。你必须为清理编写一个脚本,但sed'll可能做得很好,你不需要真正的xml解析。

相关问题