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