代码之家  ›  专栏  ›  技术社区  ›  S Andrew

如何在eclipse ubuntu中打开cmake项目

  •  0
  • S Andrew  · 技术社区  · 6 年前

    我有一个本地人 CMake Eclipse 它提供了auto-complete和其他特性,使我的开发更加容易。我似乎找不到如何在Eclipse中导入a CMake项目。

    0 回复  |  直到 13 年前
        1
  •  38
  •   arrowd    8 年前

    KDevelop 是一个非常棒的IDE,支持CMake。

    cd <project_dir>
    cmake -G "Eclipse CDT4 - Unix Makefiles" ./
    

    这将为您生成Eclipse项目。

        2
  •  24
  •   user149408    10 年前

    阐述阿罗德对日食的回答:

    首先,为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接收更改。
        3
  •  6
  •   user149408    8 年前

    我刚知道CMakes CDT项目生成器 appears to be unmaintained 而且已经引起了各种各样的问题,特别是在后来的Eclipse版本中(我也有自己的一部分)。

    CMakeLists.txt 作为唯一的真相来源。它还允许您将源树与工作区分开。

    • 在Eclipse中,选择 .
    • 输入项目名称并选择源树的根作为项目位置。
    • 选择 作为项目类型,并接受默认的工具链。
    • 完成
        4
  •  2
  •   kdm    7 年前

    简而言之,目前只有CDT生成器是一个可行的选择。为什么?因为Eclipse必须从某个地方获取预处理器定义、包含路径以及构建中包含的文件。否则,如果没有定义正确的宏,我们最终会为所有内容编制索引,结果会很糟糕。如果您的repo中有boost,或者有一个中型或大型的树,那么在现实世界中索引所有内容根本就行不通——无论如何,这与Eclipse索引器的速度和可靠性无关。因为现在大多数人可能想用忍者来建造(谁想等30多秒来建造一个温暖的建筑来看看什么是肮脏的?),这就排除了通过当前支持的makefile导入此信息的唯一方法,除非每次配置时都要生成两个独立的生成系统,这将使自动化成为一个真正的难题(考虑到当列表更改时cmake会重新运行)。

    我还不知道这个特性实际上是如何工作的,但是看起来Eclipse必须通过CMakeLists的层次结构进行解析,按照逻辑来查看进行了哪些add_subdirectory()调用,设置了哪些预处理器定义,这似乎是一种没有前途的方法,因为我们有cmake服务器模式来实现这一点,而且毫无疑问,这需要在Eclipse中重新实现几乎所有的cmake语言解析器。

    我对cmake支持的最低要求是:

    • 能够导入已配置的项目。大型构建系统通常使用脚本在命令行上将许多变量传递给cmake。
    • 只有构建系统的一部分才应该被索引。
    • 必须使用预处理器定义并包含从生成系统到具有工作索引的路径。

    目前除了CDT生成器之外,我看不到如何使用其他任何东西来执行上述任何操作,而实现工作和优化的解决方案的唯一方法是对cmake生成器进行一些黑客攻击,或者对生成的.cproject进行后期处理,以选择索引的内容(即并非所有cmake U SOURCE_目录)。这是另一个黑客攻击(由于cmake没有任何方法将post configure任务附加到configure步骤中,因此我们必须分叉一个进程,并监视父cmake是否终止。这显然是代表cmake开发人员的一个深思熟虑的决定,也许是正确的)

    我当然非常感谢任何更好的方法。在Eclipse中CMAKE支持的状态对于一个应该用于C++开发的工具来说是相当糟糕的。索引器(至少当它不受需要重新启动Eclipse的常规锁的困扰时)实际上是最好的索引器之一,Eclipse是一个非常好的跳转代码的环境。

        5
  •  2
  •   Nathan B    7 年前

    执行以下操作:

    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版本

        6
  •  1
  •   Yushan ZHANG    7 年前

    我的桌面上有一个简单的解决方案:

    1. 在eclipse中: New -> New C/C++ Project -> Empty or Existing CMake Project
    2. 将旧目录中的所有文件复制到新目录(项目的路径)。
    推荐文章