我有一个本机CMake项目,我想将Eclipse IDE 与它一起使用,以便通过提供自动完成和其他功能使我的开发更容易。我似乎找不到如何在 Eclipse 中导入 CMake 项目。
PS:我愿意为其他与 CMake 配合良好的 IDE 提供建议。
KDevelop是一个很棒的 IDE,具有出色的 CMake 支持。
至于 Eclipse - 运行这个:
cd <project_dir>
cmake -G "Eclipse CDT4 - Unix Makefiles" ./
这将为您生成 Eclipse 项目。
详细说明箭头对 Eclipse 的回答:
首先,为 CMake 文件选择一个目录。我更喜欢将我的 Eclipse 工作区~/workspaces
和源代码保存在~/src
. 我需要构建或测试项目的数据位于项目工作区目录的子目录中,因此我建议对 CMake 执行相同的操作。
假设您的工作区和源文件夹都命名为someproject
,请执行以下操作:
cd ~/workspaces/someproject
mkdir cmake
cd cmake
cmake -G "Eclipse CDT4 - Unix Makefiles" ~/src/someproject
然后,在您的 Eclipse 工作区中,执行以下操作:
文件 > 导入... > 常规 > 现有项目到工作区
检查选择根目录并选择~/workspaces/someproject/cmake
。确保未选中将项目复制到工作区。
单击完成,您的工作区中有一个 CMake 项目。
有两点需要注意:
cmake
工作区子目录,但您可以使用您选择的名称。Makefile.am
),您将需要重新运行最后一个命令,以便 Eclipse 获取更改。我刚刚了解到,CMake 的 CDT 项目生成器似乎没有维护,并导致了各种问题——尤其是似乎在 Eclipse 的更高版本(我也分享了其中的版本)中。
建议使用 cmake4eclipse(可从 Eclipse Marketplace 获得),它CMakeLists.txt
用作其唯一的事实来源。它还允许您将源代码树与您的工作区分开。
简而言之,目前只有 CDT 生成器是可行的选择。为什么?仅仅是因为 Eclipse 必须从某个地方获取预处理器定义、包含路径以及构建中包含的文件。否则,我们最终会索引所有内容,而且很糟糕,没有定义正确的宏。如果您的 repo 或中型或大型树有提升,那么索引所有内容在现实世界中根本无法正常工作 - 无论如何,Eclipse 索引器的速度和可靠性都不会。由于现在大多数人可能都想使用 Ninja 进行构建(谁想等待 30 多秒的热构建只是为了看看什么是脏的?),这排除了通过当前支持的 makefile 导入此信息的唯一方法,除非您希望每次配置时都必须生成两个单独的构建系统,
在 Eclipse Photon 中有一个直接导入 cmake 项目的新选项。但是,在这个阶段,我想说它对于除了琐碎的项目之外的任何东西看起来几乎没有用,因为似乎没有任何方法可以导入已经配置的构建目录,或者任何地方来设置传递给的变量和参数制作。我还不知道这个功能实际上是如何工作的,但似乎 Eclipse 必须通过 CMakeLists 的层次结构进行解析,按照逻辑查看进行了哪些 add_subdirectory() 调用,以及设置了哪些预处理器定义,这似乎是一种没有未来的方法,因为我们有 cmake 服务器模式来解决这个问题,毫无疑问,它需要在 Eclipse 中重新实现几乎所有的 cmake 语言解析器才能完成这项工作。
到目前为止,似乎满足现实世界要求的唯一可行解决方案似乎是使用 cmake CDT 生成器。它可以直接从cmake内部获取上述信息,并将其写入.cproject文件。如前所述,它并没有真正维护,并且依赖于 .cproject 的过时模板,这会导致一些问题。
我自己对 cmake 支持的最低要求是:
目前,除了 CDT 生成器之外,我看不到如何用任何东西执行上述任何操作,而实现有效和完善的解决方案的唯一方法需要对 cmake 的生成器进行一些黑客攻击,或者对生成的 .cproject 进行后处理选择索引的内容(即不是所有的 CMAKE_SOURCE_DIRECTORY)。这是另一个 hack(因为 cmake 没有任何方法将配置后的任务附加到配置步骤中,我们必须分叉一个进程,并监视父 cmake 的终止。这是代表 cmake 的深思熟虑的决定开发人员显然,也许是正确的)
我当然非常感谢任何更好方法的信息。对于一个应该用于 C++ 开发的工具来说,Eclipse 中对 cmake 的支持状态相当糟糕。索引器(至少当它没有被需要重新启动 Eclipse 的常规锁定所困扰时)实际上是最好的,而 Eclipse 是一个非常好的代码跳转环境。
执行以下操作:
mkdir debug
(或发布,或任何其他名称)
cd debug
cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=TRUE -DCMAKE_ECLIPSE_MAKE_ARGUMENTS=-j3 -DCMAKE_ECLIPSE_VERSION=4.1 ../
确保设置正确的 Eclipse 版本
然后从 Eclipse 中打开文件夹(打开项目)
我桌面上的一个简单解决方案:
New -> New C/C++ Project -> Empty or Existing CMake Project
中,选择一个项目名称(例如项目)。