【问题】CMake was unable to find a build program corresponding to "Ninja".

背景描述

使用eclipse导入了一个CMake的C++项目,项目本身是完整可编译的,即,在命令行下使用cmake、make最终可以编译出目标文件。但是,导入eclipse之后,无法进行编译,报错信息为:CMake was unable to find a build program corresponding to "Ninja".

我使用的操作系统是ubuntu16.04.5。

探索过程

从字面来看,eclipse在使用cmake进行构建的过程中找不到ninja生成工具,当然,我的系统中确实没有安装这个东东。cmake在编译CMakeLists.txt文件时使用的命令:

cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON /your/source/path

所以,很明确,cmake使用Ninja作为生成工具。

使用

apt-cache search ninja

命令搜索ninja相关包,可以看到ninja和ninja-build两个包。但是,我猜想应该是可以设置eclipse在构建的时候不使用Ninja生成器,而使用“Unix Makefiles”生成器。

随后,我打开项目属性(选中项目alt+Enter,或者项目名称上点击右键-->属性),选择“CMake”,但是只看到“Launch CMake GUI...”按钮。点击该按钮报错,无法打开cmake-gui。使用

sudo apt install cmake-gui

命令安装了cmake-gui。之后,点击“launch CMake GUI ...”打开了cmake-gui应用,这是一个可以配置cmake缓存生成的应用。为了能够使用eclipse编译,最后我还是使用命令

sudo apt install ninja-build

安装ninja工具。

总结

使用eclipse集成的cmake工具需要安装ninja-build和cmake-gui两个包,使用下面的命令安装:

sudo apt-get install cmake-gui

sudo apt-get install ninja-build

遗留问题

最终还是没有找到设置的地方,如何让eclipse在执行cmake创建cmake缓存时使用-G选项的"Unix Makefiles"选项值。有知道的朋友请赐教。

猜你喜欢

转载自blog.csdn.net/fibbery/article/details/85162077