如何使用插件CDT为cmake配置Eclipse“Helios”?
cmake all
CMake Error: The source directory "D:/javaworkspace/workspace/Planner/Debug/all" does not exist.
Eclipse总是想使用'all'选项而我不知道如何阻止它不使用它。
我在“构建行为”部分看到,在“偏好”中有“全部”选项。我删除了这个,但它仍然有效(同样的错误)。
答案 0 :(得分:26)
在Eclipse-CDT中,您没有创建 cmake项目,但您导入了cmake项目。 这是你应该做的:
假设名为“Planner”的CMake项目的来源位于D:/javaworkspace/src/Planner
创建一个文件夹(文件夹需要彼此平行):D:/javaworkspace/build/Planner
转到文件夹D:/javaworkspace/build/Planner
并使用Eclipse生成器运行CMake:
cmake ../../src/Planner -G"Eclipse CDT4 - Unix Makefiles"
这将为您的Planner项目生成make文件。
要在Eclipse中导入它,请执行以下操作:
档案 - >导入 - >现有代码为Makefile项目
并选择D:/javaworkspace/build/Planner
(带有make文件的构建输出文件夹)作为“现有代码位置”
然而,看着你的路径,在我看来你正在使用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导出的编译器选项来索引你的项目。
这解决了当我只使用“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可以的范围内)。
答案 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
要指出的另一件事是,您可以手动触发对文件的解析:
配置选项/在编辑器中打开的索引源和头文件