cmake ninja: error: 'xxx', needed by 'xxx', missing and no known rule to make it
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmake ninja: error: 'xxx', needed by 'xxx', missing and no known rule to make it相关的知识,希望对你有一定的参考价值。
参考技术A 出现上述错误,是因为指定依赖的第三方so的路径设置错误导致的,大多是因为设置的不是绝对路径导致的我的CMakeLists.txt放在当前module的根目录下
当然你也可以配合其他Cmake常用变量使用,不一定是$PROJECT_SOURCE_DIR
获取 CMake 的 Ninja 测试命令
【中文标题】获取 CMake 的 Ninja 测试命令【英文标题】:Get CMake's Ninja test command 【发布时间】:2017-10-12 14:29:48 【问题描述】:我正在尝试让 Ninja 在 FreeBSD 10.3 上使用 CMake:
cmake -GNinja ..
-- Configuring done
CMake Error:
The detected version of Ninja () is less than the version of Ninja required
by CMake (1.3).
-- Build files have been written to: /home/me/pj/_build
我已经在~/bin/ninja
(在我的$PATH
)中放置了一个本地编译的(来自Git tag v1.8.2)Ninja。
$ cmake -version
cmake version 3.4.1
$ ninja --version
1.8.2
我也试过添加-DCMAKE_MAKE_PROGRAM=ninja
和-DCMAKE_MAKE_PROGRAM=~/bin/ninja
,没有效果。
我还尝试查看是否真的调用了 Ninja(通过将脚本写入新文件),并且看起来它从未被调用过。
有没有办法查看使用哪些命令来检查忍者版本?
【问题讨论】:
【参考方案1】:通过检查生成的 CMakeCache.txt 文件,您应该能够知道 CMake 选择了哪个 Ninja 版本。
在CMakeCache.txt
你应该有类似的东西:
// Path to a program.
CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/ninja
这可以判断默认选择哪个忍者版本以及-DCMAKE_MAKE_PROGRAM
是否受到尊重或由于某种原因被忽略。
此外,值得研究生成的 CMakeOutput.log
和 CMakeError.log
文件。
我还建议将 ninja
添加到您的 PATH 中,希望 CMake 会从那里选择它。
【讨论】:
【参考方案2】:我在收到相同的错误消息时遇到了这个问题。我忘记做的是在使用-GNinja
或-DCMAKE_GENERATOR=Ninja
选项运行cmake
之前删除CMakeCache.txt 文件。所以cmake
正在拉取缓存的变量。
【讨论】:
以上是关于cmake ninja: error: 'xxx', needed by 'xxx', missing and no known rule to make it的主要内容,如果未能解决你的问题,请参考以下文章
链接到 CMAKE 中的 ExternalProject_add 依赖项
我的C/C++语言学习进阶之旅解决使用ninja命令的时候报错:ninja: error: loading ‘build.ninja‘: 系统找不到指定的文件。
我的C/C++语言学习进阶之旅解决使用ninja命令的时候报错:ninja: error: loading ‘build.ninja‘: 系统找不到指定的文件。
我的C/C++语言学习进阶之旅解决使用ninja命令的时候报错:ninja: error: loading ‘build.ninja‘: 系统找不到指定的文件。