如何配置CDT插件的Eclipse "Helios"版本以使用cmake?
cmake all
CMake Error: The source directory "D:/javaworkspace/workspace/Planner/Debug/all" does not exist.
Eclipse一直想使用“all”选项,我不知道如何停止它不使用它。
我在“偏好设置”的“构建行为”部分看到了“all”选项。我删除了它,但它仍然工作不正常(同样的错误)。
如何配置CDT插件的Eclipse "Helios"版本以使用cmake?
cmake all
CMake Error: The source directory "D:/javaworkspace/workspace/Planner/Debug/all" does not exist.
Eclipse一直想使用“all”选项,我不知道如何停止它不使用它。
我在“偏好设置”的“构建行为”部分看到了“all”选项。我删除了它,但它仍然工作不正常(同样的错误)。
在Eclipse-CDT中,您不需要创建cmake项目,而是需要导入cmake项目。 以下是您应该执行的操作:
假设您的CMake项目源代码名称为“Planner”,其位于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中导入,请执行以下操作:
文件 -> 导入 -> C/C++ -> 作为Makefile项目导入现有代码
然后选择D:/javaworkspace/build/Planner
(具有make文件的构建输出文件夹)作为“现有代码位置”
但是,根据您的路径,我认为您正在使用Windows。在Windows中,CMake可以生成Visual Studio项目。如果您想使用CMake,建议先创建一个“hello world”项目,然后手动创建一个CMakeLists.txt文件(请记住,Eclipse不会创建CMake项目)。
不要尝试导入您使用 cmake -G Eclipse CDT4 - Unix Makefiles 手动创建的 Eclipse 项目,因为那样会让您走上经典的 Makefile 项目路线!
此插件最好的功能是它可以使用 cmake 导出的编译器选项来索引您的项目。
当我只使用“CDT GCC Build-In Compiler Settings”并添加像“-std=c++14”这样的内容到“获取编译器规范的命令”时,这修复了所有恶心的索引器问题。
在 Eclipse 中使用 CMAKE 构建 Makefile 项目(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}
就这样!
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
SET(CMAKE_CXX_USE_RESPONSE_FILE_FOR_INCLUDES NO)
SET(CMAKE_C_USE_RESPONSE_FILE_FOR_INCLUDES NO)
另一种完全不同的方法。
手动创建一个空的Eclipse项目。
通过“项目属性 -> C/C++通用 -> 路径和符号 -> 源位置”链接源目录。
在Debug和Release构建目录中使用“Make Targets视图”创建“Make Targets”。将“Make Target”字段留空,并将“command”字段设置为cmake -G "Unix Makefiles" <path/to/the/sources>
。
当您双击所创建的“Make Target”时,它应该触发Debug/Release目录中的cmake调用。
在“项目属性 -> C/C++ Build”中禁用内置的makefile生成器。
现在正常的构建应该可以工作了。它还将捕获CMakeLists.txt文件中的任何更改(在CMake能够处理的范围内)。
也许这里有一个更详细的描述:https://stackoverflow.com/a/38140914/4742108
make
的替代品。 - arrowd