1. 程式人生 > >【問題】CMake was unable to find a build program corresponding to "Ninja".

【問題】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"選項值。有知道的朋友請賜教。