背景描述
使用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"选项值。有知道的朋友请赐教。