Ninja Build 期间的 Sudo

Posted

技术标签:

【中文标题】Ninja Build 期间的 Sudo【英文标题】:Sudo during Ninja Build 【发布时间】:2017-10-17 08:04:59 【问题描述】:

我有一个使用 cmake + make 构建的项目,它使用宏来更改应用文件的功能。

我正在尝试从 make 切换到 ninja,但是当 sudo 需要询问我 root 密码才能运行 setcap ninja 时,不显示请求并且不允许我插入它。

有没有可能做点什么?

PS。将 setcap 执行移出构建时间不是一种选择,因为其他人正在使用 make 并且他们很高兴这样!

【问题讨论】:

【参考方案1】:

执行sudo的目标应该在控制台池中

存在一个名为 console 的预定义池,深度为 1。它 具有池中的任何任务都可以直接访问的特殊属性 标准输入,提供给 Ninja 的输出和错误流, 通常连接到用户的控制台(因此得名) 但可以重定向。这对于交互式任务或 在控制台上产生状态更新的长时间运行的任务(例如 作为测试套件)。

Docs

【讨论】:

非常感谢,这正是我想要的,但是当我添加到我的 add_custom_command USES_TERMINAL(cmake 版本 3.7.2)时,遗憾的是没有任何改变。 您是否检查过生成的 Ninja.build 文件中是否确实按照需要进行了翻译? 你是对的。我在 ninja 文件的链接构建中手动添加了 pool=console 并且它起作用了。所以这似乎是 CMake 生成器的问题。

以上是关于Ninja Build 期间的 Sudo的主要内容,如果未能解决你的问题,请参考以下文章

ninja build系统介绍

ninja: build stopped: subcommand failed. build/core/ninja.mk:158: recipe for target ninja_wrapper(代码

meson+ninja build系统,使用meson & ninja 编译C工程

如何为 C++ 安装 ninja-build

我的C/C++语言学习进阶之旅解决使用ninja命令的时候报错:ninja: error: loading ‘build.ninja‘: 系统找不到指定的文件。

我的C/C++语言学习进阶之旅解决使用ninja命令的时候报错:ninja: error: loading ‘build.ninja‘: 系统找不到指定的文件。