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 stopped: subcommand failed. build/core/ninja.mk:158: recipe for target ninja_wrapper(代码
meson+ninja build系统,使用meson & ninja 编译C工程
我的C/C++语言学习进阶之旅解决使用ninja命令的时候报错:ninja: error: loading ‘build.ninja‘: 系统找不到指定的文件。
我的C/C++语言学习进阶之旅解决使用ninja命令的时候报错:ninja: error: loading ‘build.ninja‘: 系统找不到指定的文件。