gpt4 book ai didi

c++ - Eclipse CDT 自动更新/同步项目列表(到 easy "refresh"相关项目集)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:12:01 25 4
gpt4 key购买 nike

历史背景:

我们有一个项目由以下部分组成:

  • 宿主应用程序(C++)
  • 脚本引擎库(也是用 C++ 编写的)
  • 很多 C++ 插件(大约 30+)
  • 很多脚本将所有东西联系在一起......

从一个版本到另一个版本,一些插件被添加,一些被删除。到目前为止,我们使用 Visual Studio 解决方案 (*.sln) 来包含主机应用程序、脚本引擎库和插件的所有项目 (*.vcxproj)(每个插件一个 *.vcxproj!)。为了共享源/项目,我们使用专有的源代码控制系统,直到现在,一旦我们合并了来自服务器的更新(添加了一些插件项目,删除了一些插件项目),由于“重新加载”功能,VS 中的所有项目树都得到了刷新(开发人员无需执行任何操作即可查看和构建更新的源代码树)。

问题:

现在我们的高级管理层决定切换到 Eclipse CDT/MinGW 对,我们面临 Eclipse Workspace 与 Visual Studio *.sln 不同的问题......

现在,当某些插件项目文件夹出现或某些插件项目文件夹消失时,相应的工作区项目不会相应更新。

因此从现在开始,每个开发人员都必须使用 File>Import...>General>"Existing projects into workspace" File/"Open Projects from File System"手动将新项目添加到自己的工作区一旦它们被其他开发人员添加到源代码管理中。还必须从自己的工作区中手动删除那些从源代码管理中删除的插件项目...

这与我们之前使用 Visual Studio 时的“重新加载”功能自动更新项目/源代码树形成了鲜明对比(只是因为所有信息都来自 *.sln/*.vcxproj服务器)。

我们的第一个选择是将 Workspace\.metadata 等内容放置到源代码控制中(就像我们之前对 *.sln 文件所做的那样)但是“这不是 Eclipse Workspace 设计使用的方式”(这甚至不是可能只是因为 .metadata\* 中的路径是绝对的,并且大量的 Workspace\* 东西根本不可合并)

问题:

是否有某种方法可以自动同步 Eclipse CDT Workspace 与从源代码管理中获取的项目集。就像只需按一些(隐藏的?)神奇的“刷新”按钮(在要安装的特殊插件或类似的东西中),所有新项目将自动添加到工作区的源代码树中并删除项目也会自动消失,不需要使用所有那些“导入”向导,也不需要手动删除已删除的项目吗?

在 Eclipse 中可能有一个特殊的“容器”项目类型来扮演与 *.sln 在 Visual Studio 或类似的东西中所扮演的角色相同的角色?

可能还有其他可用的选项吗?...总体意图不是用一些 Eclipse 等效项替换 *.sln,而是在将一堆插件项目作为一个整体进行管理时支持类似的工作流程并且项目集“刷新”是简单的操作,不需要团队中的每个人手动跟踪该集中出现/消失的项目。

最佳答案

您是否看过使用 CMake 生成 Eclipse 项目文件?然后您可以将它们导入 Eclipse 工作区。

它不是自动的,但如果您为每个部分创建单独的 CMakeLists.txt 文件,那么您可以轻松地在主 CMakeLists.txt 文件中注释该部分的包含,并在您只想加载部分的子集时重新生成项目文件项目。

https://cmake.org/Wiki/Eclipse_CDT4_Generator

如果您想改回 VS 或其他 IDE,CMake 也可以为此生成项目文件。

我个人只使用 CMake 生成 VS 解决方案和 Unix make 文件,所以我不能保证它的效果如何。

HTH.


旁注,为什么管理层决定应该使用 Eclipse 而不是 Visual Studio?这听起来像是一个糟糕的决定,在做出决定之前没有事实依据或影响研究。

是因为 Eclipse 是免费的吗?他们是否考虑过降低开发人员生产力成本的因素?

关于c++ - Eclipse CDT 自动更新/同步项目列表(到 easy "refresh"相关项目集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39810758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com