如何为cmake配置Eclipse CDT?

时间:2012-02-26 14:21:40

标签: cmake eclipse-cdt

如何使用插件CDT为cmake配置Eclipse“Helios”?

cmake all 
CMake Error: The source directory "D:/javaworkspace/workspace/Planner/Debug/all" does not    exist.

Eclipse总是想使用'all'选项而我不知道如何阻止它不使用它。

我在“构建行为”部分看到,在“偏好”中有“全部”选项。我删除了这个,但它仍然有效(同样的错误)。

7 个答案:

答案 0 :(得分:26)

在Eclipse-CDT中,您没有创建 cmake项目,但您导入了cmake项目。 这是你应该做的:

  1. 假设名为“Planner”的CMake项目的来源位于D:/javaworkspace/src/Planner

  2. 创建一个文件夹(文件夹需要彼此平行):D:/javaworkspace/build/Planner

  3. 转到文件夹D:/javaworkspace/build/Planner并使用Eclipse生成器运行CMake:

    cmake ../../src/Planner -G"Eclipse CDT4 - Unix Makefiles"
    

    这将为您的Planner项目生成make文件。

  4. 要在Eclipse中导入它,请执行以下操作:

    档案 - >导入 - >现有代码为Makefile项目

    并选择D:/javaworkspace/build/Planner(带有make文件的构建输出文件夹)作为“现有代码位置”

  5. 然而,看着你的路径,在我看来你正在使用Windows。在Windows中,CMake可以生成Visual Studio项目。如果你想使用CMake我建议首先使用CMake创建一个“hello world”项目(记住,Eclipse不会创建CMake项目,你必须手动创建一个CMakeLists.txt文件)

答案 1 :(得分:11)

对我来说最有效的是cmake4eclipse。这是一个可以通过市场上获得的插件。

来自cmake4eclipse帮助文本的部分:

  

CMake for CDT需要现有的C / C ++项目才能使用。它   允许使用cmake作为makefile的生成器而不是   发电机内置于CDT。请参阅启用CMake buildscript生成   详情。

     

要使用现有源代码设置新项目,请按照以下步骤操作   步骤进行:

     
      
  • 查看您的源代码。
  •   
  • 打开新的C / C ++项目向导(“File”=>“New”=>“C Project”或“File”=>“New”=>“C ++ Project”)。      
        
    • 确保项目位置   指向已签出文件的根目录
    •   
    • 对于该项目   键入,选择可执行文件。您也可以选择共享库或静态   图书馆,没关系,信息来自你的   CMakeLists.txt,但CDT需要它。不要选择Makefile项目   这里!
    •   
    • 完成项目创建。
    •   
  •   
  • 打开“项目属性”对话框。      
        
    • 选择“C / C ++ Build”节点和“Builder Settings”选项卡,确保生成Makefile   自动检查。
    •   
    • 选择“工具链编辑器”节点和   将“CMake Make Builder”设置为当前构建器。
    •   
    • 如果你的顶级水平   CMakeLists.txt不驻留在已检查的根目录中   输出文件,选择“C / C ++ General”“路径和符号”节点和   “来源位置”标签。然后调整源文件夹以指向   包含CMakeLists.txt文件的目录。这将告诉CDT   索引器,用于扫描项目中的头文件。
    •   
  •   
  • 专业提示:如果您错过了二进制文件或档案文件夹,请在已签出文件的根目录中添加一个CMakeLists.txt文件   C / C ++项目视图。建立项目。这将调用cmake   如有必要,生成构建脚本,然后调用make。
  •   
     

不要尝试导入您手动创建的Eclipse项目   使用cmake -G Eclipse CDT4 - Unix Makefiles,因为它会让你   经典的Makefile项目路线!

关于这个插件的最好的事情是它可以使用cmake导出的编译器选项来索引你的项目。

  • 打开“项目属性”对话框。
    • 选择“C / C ++常规”节点和“预处理器包含路径,宏等”标签。选择“CMAKE_EXPORT_COMPILE_COMMANDS Parser”并将其移至列表顶部。
    • 点击“确定”关闭对话框。确保现在触发一个构建并重新创建索引。

Provider tab

这解决了当我只使用“CDT GCC内置编译器设置”并将“-std = c ++ 14”之类的东西添加到“命令以获取编译器规范”时令我烦恼的所有令人讨厌的索引器问题。

答案 2 :(得分:5)

在Eclipse Makefile项目中使用CMAKE(在win上):

1)创建新的“带有现有代码的Makefile项目

2)修改构建器设置(项目属性 - > C / C ++构建 - >构建器设置):

  • 构建命令:cmd / c“mkdir $ {PWD}& cd / D $ {PWD}&& $ {CMAKE} -G”Unix Makefiles“$ { ProjDirPath}&& make“

  • 构建目录:$ {workspace_loc:/ IoT_SDK} / build / $ {ConfigName}

这就是全部!

答案 3 :(得分:2)

除了接受的答案,你应该指定eclipse版本。

Eclipse Luna(4.4):

cmake -G"Eclipse CDT4 - Unix Makefiles" -D_ECLIPSE_VERSION=4.4 ../../src/Planner

Eclipse Kepler(4.3):

cmake -G"Eclipse CDT4 - Unix Makefiles" -D_ECLIPSE_VERSION=4.3 ../../src/Planner

答案 4 :(得分:1)

另一种完全不同的方法。

  • 手动创建一个空的Eclipse项目。

  • 通过项目属性链接源目录 - > C / C ++一般 - >路径和符号 - >来源地点。

  • 在调试和发布构建目录中,创建&#39;制作目标&#39; (使用&#39;制作目标视图&#39;)。离开&#39;制作目标&#39;字段为空并设置&#39;命令&#39;字段到cmake -G "Unix Makefiles" <path/to/the/sources>

  • 当您双击&#39;制作目标&#39;你已经创建了它,它应该在Debug / Release dirs中触发cmake调用。

  • 项目属性 - &gt; C / C ++ Build&#39;禁用内置makefile生成器。

现在正常构建应该有效。它还将获取CMakeLists.txt文件中的任何更改(在CMake可以的范围内)。

可能有更详细的说明:https://stackoverflow.com/a/38140914/4742108

答案 5 :(得分:0)

无论我使用了哪种方法,都没有对外部包含进行索引。

这是因为CMAKE使用“响应文件”将所有包含的内容隐藏在这些文件中,而是直接使用它(-IPATH_TO_SOME_DIR)

要禁用“响应文件”,我使用了以下命令:

SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES NO)
SET(CMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES NO)

为了强制CMAKE显示gcc / g ++执行,我将make构建目标修改为 “所有VERBOSE = 1”。请注意,在使用cmake4eclipse时不需要这样做。

我在2018-12(4.10.0)版中有Eclipse,而CDT在9.6版中。

答案 6 :(得分:0)

这是一个古老的问题,但值得一些更新。

首先,制作cmake4eclipse的人将解析功能添加到CDT中。该功能/错误在2020-08-05(2020年8月5日)上被标记为“已解决”,因此它应该在下个月发布的Eclipse版本中使用。参见:https://bugs.eclipse.org/bugs/show_bug.cgi?id=559674

要指出的另一件事是,您可以手动触发对文件的解析:

配置选项/在编辑器中打开的索引源和头文件

Configuration Options / Index source and header files opened in editor