如何将 CMAKE_MAKE_PROGRAM 设置为忍者?
Posted
技术标签:
【中文标题】如何将 CMAKE_MAKE_PROGRAM 设置为忍者?【英文标题】:How can I set CMAKE_MAKE_PROGRAM to Ninja? 【发布时间】:2020-03-21 16:57:07 【问题描述】:我是 CMake 的新手,我正在尝试了解如何配置 CMake 以使用 Ninja 作为构建工具。我遇到的具体问题是我正在尝试使用他们的 install.py 为 vim 安装 YouCompleteMe 插件。我收到以下错误:
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
时,我的意思是在机器级别,例如环境变量。不是通过修改我正在尝试构建的实际项目中的构建定义文件。
【问题讨论】:
【参考方案1】:您应该将环境变量CMAKE_GENERATOR
设置为Ninja
。 CMake 将读取此变量以选择生成器,而不是选择您所看到的默认“Unix Makefiles”。当您不直接调用cmake
并且无法通过-G
命令行选项来设置生成器时,这很有用。
CMAKE_GENERATOR
变量最终将为您设置CMAKE_MAKE_PROGRAM
变量,因此您不必手动修改它。
【讨论】:
我在全局范围内设置了一个环境变量export CMAKE_GENERATOR=Ninja
并验证它是否已设置。但我仍然得到同样的错误。当我检查cmake --help
时,我看到默认生成器仍然是“Unix Makefiles”。
@kovac CMake 帮助菜单可能不会根据系统环境变量而改变,因此在您的环境中可能总是说“Unix Makefiles”。设置环境变量CMAKE_GENERATOR
将覆盖默认值。您应该在重新运行 CMake 之前删除 CMake 缓存 (CMakeCache.txt
),以免意外使用旧配置。【参考方案2】:
sudo apt install ninja-build
帮我解决了
【讨论】:
以上是关于如何将 CMAKE_MAKE_PROGRAM 设置为忍者?的主要内容,如果未能解决你的问题,请参考以下文章
CMake 错误:CMake 无法找到与“Unix Makefiles”对应的构建程序。 CMAKE_MAKE_PROGRAM 未设置
Cmake “cmake_make_program is not set” 问题。