【问题标题】:git and visual studio 2010 expressgit 和视觉工作室 2010 快递
【发布时间】:2013-02-05 16:46:14
【问题描述】:

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

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

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

编辑:

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

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

【问题讨论】:

  • 恐怕这是不可能的。也许你可以在 pre-commit 钩子的有问题的文件中设置没有这些东西的版本?或者也许有一种方法可以设置它们,以便他们 include (à la C) 本地配置,并将这些部分保存在非版本控制的文件中,由每个用户设置?
  • 不回答你的问题,但我喜欢使用 CMake 来生成 Visual Studio 项目。 CMake 有很多优点。另外,我想向您展示我创建的用于对生成的 Visual Studio 项目中的源文件进行排序的 cmake 代码:github.com/Andrepuel/ThirdParty.cmake#source-group-tree

标签: c++ git visual-studio-express


【解决方案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),所有设备都必须设置该环境变量。

如果这有帮助,请告诉我。

【讨论】:

  • 其实是1和2。一个项目中有一些文件是另一个项目需要的,但问题是($SolutionDir)是另一台机器上的不同目录,但它所关联的值和这台机器上的一样。对于问题 2,我确实需要提升,但我非常希望避免强迫它们位于每台机器上的相同路径名中。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 2022-11-02
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多