【问题标题】:how to work on a project with visual studio and eclipse如何使用 Visual Studio 和 Eclipse 处理项目
【发布时间】:2010-10-12 15:30:15
【问题描述】:

我们目前正在启动一个项目,涉及 Windows 和 linux 用户并使用 SVN。

问题在于想要使用 Visual Studio(大多数人是 2010 年)的人在文件夹结构和项目同步方面存在问题。

他们有ankhsvn(http://ankhsvn.open.collab.net/),他们将项目映射到真实文件夹,所以每个人都有良好的文件结构,解决方案在SVN上(我们更喜欢不是ankhsvn需要它)其他人只需在SVN上的解决方案下检查项目文件夹。

但是如果有人不使用 SVN 添加一个新文件 VS 不会自动添加它,这会造成很多麻烦。

那么我们的设置正确吗?有没有办法在这种环境下很好地工作?你会建议我们如何工作?

【问题讨论】:

    标签: visual-studio eclipse svn cmake project-organization


    【解决方案1】:

    如果您必须为每个目标更新项目文件,维护多个构建目标会很困难。例如,添加新的源文件需要更新 Visual Studio 项目和 makefile。

    试试CMake 怎么样?它可以为多个构建环境生成项目文件。我们在工作中使用它来支持 32 位或 64 位 Windows 上的多个版本的 Visual Studio,以及 32 位或 64 位 Linux 上的多个版本的 gcc。每个项目(一个库或可执行文件)都需要维护一个用于生成目标项目文件的 CMakeLists.txt 文件。

    【讨论】:

    • 我会看看它,但我在快速检查后看到的问题是同样的问题会发生,即您必须手动将文件添加到位(在 HDD 和 cmakelist.txt 中)并且几乎每次结帐时都必须生成一个解决方案/项目。告诉我我是否错了(我会很高兴),但它可能仍然比实际设置好
    • 您必须用 CMake 配置文件替换任何现有的 makefile 和 Visual Studio 项目。如果您的项目很大,设置 CMake 将需要大量工作。但是,当您升级到新版本的 Visual Studio 或决定添加对新平台/编译器的支持时,它将为您省去更新每个项目文件的麻烦。您将需要在初始结帐后生成解决方案/项目文件。之后,仅当 CMake 文件发生更改时,才会重新生成解决方案/项目文件。我认为 CMake 会自动检测到这些更改。
    • 好的,所以如果我理解得很好(并且我会在可能的情况下对其进行测试),我们将不必每次都手动生成解决方案/项目,这会在需要时自动完成,唯一的事情是要手动完成的是在 cmakelist.txt 中添加文件,这应该不会太糟糕。对于设置,该项目才刚刚开始,所以它仍然非常小(最多十几个文件并且没有太多依赖)
    【解决方案2】:

    我想说 Cmake 绝对是要走的路:它只允许您维护一组文件(CMakeLists.txt),您将能够为所有 Visual Studio 版本生成项目,对于 Eclipse,用于 gcc、CC 等的 Xcode 和 makefile...

    就设置 cmake 的难度而言:在大多数情况下,它的工作量并不大。正如您在对 Jaime 回答的评论中提到的那样,您不需要指定要包含的文件列表。您可以包含(glob)一个文件夹。这样,当添加新的源文件时,只要您通过运行 cmake 命令刷新它,它们就会包含在您的解决方案中。

    在 cmake 中使用您的项目可能有助于建立一个持续集成框架,例如 Hudson。它可以监控您的代码存储库 (svn) 并在提交更改时调用 cmake、构建您的项目、运行单元测试。

    project(MyNeatProject)
    
    include_directories(h/ hpp/)
    file(GLOB_RECURSE _my_src ./c/*.c)
    file(GLOB_RECURSE _my_hdr ./h/*.h)
    add_library( some_library SHARED ${YBMBS_SRC} ${YBMBS_HDR})
    target_link_libraries( some_library dependency1 dependency2)
    

    【讨论】:

      【解决方案3】:

      我会根据您团队的构成或您所针对的环境来分离我的树结构(可能是完全独立的存储库)。

      每个人都需要一个 SVN 客户端 - 那些因为在 Eclipse 中而无法使用 AnkhSVN 的人可以使用 Tortoise 之类的东西或 Eclipse 的 SVN 插件。 SVN 不知道也不关心它正在跟踪您的 C# 或 Java 或任何代码的事实。如果您将文件添加到本地 HDD,它不会神奇地出现在 repo 中。

      【讨论】:

      • 问题不在于提交到 svn,而是视觉工作室人员在结帐时有一个同步良好的项目,实际上文件在 HDD 上同步,但不在 VS 项目/解决方案上他们每次都必须手动添加
      • 你能张贴你的文件夹结构的截图吗?
      • 这不是你能神奇解决的问题,和版本控制关系不大。 Visual Studio 项目不会自动包含其所在文件夹中的所有内容,并且 AnkhSVN 不会自动将找到的所有内容添加到您的项目文件中。相反,项目文件(.csproj、.vbproj 等)包含应包含的文件列表。对项目文件进行版本控制至少会在 VS 用户之间同步项目结构,但除此之外,您还需要一个可以在 VS 和 Eclipse 项目之间转换的工具。
      • 问题是eclipse项目只使用那里的文件,不需要告诉它使用哪个文件,但是VS是的。所以我正在寻找可以在 VS 上运行的东西,以便他们可以像几乎其他所有人一样使用 SVN,但我搜索的越多,我认为这是不可能的,而且 VS 只能与 VS 一起使用,并且没有“好”的方法它。每次结帐时都必须运行转换器,对我来说结果与手动将所有新文件添加到 VS 项目中的结果大致相同,但感谢您的帮助
      • 这里问的是解决方案pastebin.com/7RDUy6ak 的文件夹结构,在 Eclipse 中,我们将文件夹 ourSrc 作为 2 个单独的项目检出,在 Visual Studio 中,我们检出作为完整解决方案的主干
      猜你喜欢
      • 2014-04-19
      • 1970-01-01
      • 2015-04-15
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 2012-12-14
      • 1970-01-01
      相关资源
      最近更新 更多