小编cba*_*era的帖子

通过单击将未知标志传递到命令行

问题

使用python click 库创建命令行工具时,是否可以向函数传递未知数量的参数?我正在考虑类似于 *args 命令的东西。

用例

我正在尝试为catkin构建一个包装器,并希望使用click来获取它附带的所有不错的实用程序。在使用指定的命令调用catkin之前,该应用程序应该执行一些任务,例如更改为工作区的根目录。例如catkin build编译代码。问题是,我不想显式声明可以传递给catkin的每个可能的编译标志,而是只想查找实际命令并将所有参数直接传递给catkin。

例子

到目前为止,我发现可以使用选项定义最后一个参数,该选项nargs=-1将收集该变量中的所有后续参数。通过这种方式,您可以收集例如几个文件名。这几乎就是我正在寻找的,除了它不会采用以破折号开头的标志-。它将来自一个错误说Error: no such option: -a

#!/usr/bin/python
import click
import subprocess

@click.command()
@click.argument('action', type=click.STRING)
@click.option('--debug', is_flag=True, help='Build in debug mode.')
@click.argument('catkin_args', nargs=-1, type=click.STRING)
def main(action, debug, catkin_args):
    """ A wrapper for catkin """

    # Do something here ...

    if debug:
        # Do some more special things...

    subprocess.call(["catkin"] + catkin_args)
Run Code Online (Sandbox Code Playgroud)

python python-click

5
推荐指数
1
解决办法
1829
查看次数

如何在 CMakePresets 中指定环境变量的默认值

使用文档时CMakePresets.json可以使用$env{<variable-name>}$penv{<variable-name>}来查询环境变量。

如果没有设置环境变量,是否可以指定默认值?

笔记:

  • 由于我尝试设置的变量也在预设内,因此我无法在 CMake 脚本内处理该问题。
  • 如果不支持默认值,是否有任何解决方法可以在预设文件中实现相同的效果?

cmake cmake-presets

5
推荐指数
0
解决办法
1270
查看次数

标签 统计

cmake ×1

cmake-presets ×1

python ×1

python-click ×1