如何将CMAKE_MAKE_PROGRAM设置为Ninja?

4

我是CMake的新手,正在尝试理解如何配置CMake以使用Ninja作为构建工具。我遇到的具体问题是,我正在尝试使用install.py安装YouCompleteMe插件到vim中。我得到了以下错误:

Searching Python 3.8 libraries...
Found Python library: /usr/lib64/libpython3.8.so
Found Python headers folder: /usr/include/python3.8
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!
See also "/tmp/ycm_build__dy3xdvd/CMakeFiles/CMakeOutput.log".
ERROR: the build failed.

在在互联网上查找类似错误后,我意识到可以通过安装 Make 来解决此问题。但是,我想知道是否可以使用已经安装并在路径中的 Ninja,而不是 Make。是否有办法将 CMAKE_MAKE_PROGRAM 设置为我的 Ninja 安装位置,以便我可以解决这个错误,或者我必须使用 Make,因为只能在项目内部设置 CMAKE_MAKE_PROGRAM
编辑:
当我说设置 CMAKE_MAKE_PROGRAM 时,我的意思是在机器级别上像环境变量一样设置,而不是修改实际要构建的项目中的构建定义文件。
3个回答

8
你应该设置环境变量CMAKE_GENERATORNinja。CMake将读取此变量来选择生成器,而不是选择您看到的默认的“Unix Makefiles”。当您不直接调用cmake并且无法传递-G命令行选项以设置生成器时,这非常有用。 CMAKE_GENERATOR变量最终将为您设置CMAKE_MAKE_PROGRAM变量,因此您不需要手动修改它。

2
我全局设置了一个环境变量 export CMAKE_GENERATOR=Ninja 并验证它已经被设置。但是我仍然得到相同的错误。当我检查 cmake --help 时,我发现默认生成器仍然是 "Unix Makefiles"。 - kovac
1
@kovac CMake的帮助菜单可能不会根据系统环境变量而改变,因此在您的环境中它很可能始终显示为“Unix Makefiles”。设置环境变量CMAKE_GENERATOR将覆盖默认值。在重新运行CMake之前,应删除CMake缓存(CMakeCache.txt),以避免意外使用旧配置。 - Kevin

-1

使用brew或其他软件包管理器安装Ninja。

brew install Ninja

-3

sudo apt install ninja-build

对我来说解决了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接