小编Zac*_*ner的帖子

将生成器表达式与 add_dependency 结合使用

我有一个名为的目标Foo.Compile,它构建我的主程序。

add_executable(Foo.Compile ...)
Run Code Online (Sandbox Code Playgroud)

然后我有一个名为的实用程序目标Foo.Process,它依赖于已经构建的可执行文件并执行一些操作。

add_custom_target(Foo.Process)
add_dependencies(Foo.Process Foo.Compile)
Run Code Online (Sandbox Code Playgroud)

但我只希望它在发布版本中运行,因为它很慢。所以我创建了一个名为 的新目标Foo,这是用户实际构建的。在发布版本中,这应该依赖于Foo.Process,但在其他配置中它不应该依赖。所以我想我可以这样做:

add_custom_target(Foo)
add_dependencies(Foo $<$<CONFIG:Release>:Foo.Process>)
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误:

  The dependency target "$<$<CONFIG:Release>:Foo.Process>" of
  target "Foo" does not exist.
Run Code Online (Sandbox Code Playgroud)

问题似乎是add_dependencies不支持生成器表达式,所以我想我只需使用target_link_libraries,我知道确实如此。但这给了我一个错误,你不能target_link_libraries在实用程序项目中使用。

请注意,我无法使用,if (CMAKE_BUILD_TYPE == Release)因为我需要支持像 Visual Studio 这样的多配置生成器,所以我认为我必须使用生成器表达式。

我是什么做的?

cmake

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

对 argparse 子命令的更好帮助

给出以下代码片段:

import argparse
import sys

parser = argparse.ArgumentParser()

subparsers = parser.add_subparsers(help="subcommand help")

command1 = subparsers.add_parser("foo", description="Run foo subcommand")
command2 = subparsers.add_parser("bar", description="Run bar subcommand")
opts = parser.parse_args(sys.argv[1:])
Run Code Online (Sandbox Code Playgroud)

当我打印此帮助时,我得到以下信息:

import argparse
import sys

parser = argparse.ArgumentParser()

subparsers = parser.add_subparsers(help="subcommand help")

command1 = subparsers.add_parser("foo", description="Run foo subcommand")
command2 = subparsers.add_parser("bar", description="Run bar subcommand")
opts = parser.parse_args(sys.argv[1:])
Run Code Online (Sandbox Code Playgroud)

有没有办法让它打印类似这样的东西:

usage: test.py [-h] {foo,bar} ...

positional arguments:
  {foo,bar}   subcommand help

optional arguments:
  -h, --help  show this help message and exit
Run Code Online (Sandbox Code Playgroud)

不提供自定义格式化程序?如果我更改格式化程序,那么它也会更改有关如何打印帮助的其他所有内容,但就我而言,我只想更改从父(子)命令打印子命令帮助的方式。

python argparse

4
推荐指数
1
解决办法
577
查看次数

将 ContextMenu 项动态绑定到静态定义的 MenuItems

我的应用程序包含一个TreeView支持一组命令的命令,但命令可能会在菜单之间移动,只出现在某些菜单上而不出现在其他菜单上,在多个菜单之间共享等。

我知道我在编译时支持的所有命令集,因此理论上我可以在我的部分中为每个命令定义一个<MenuItem>具有x:Key属性的资源<TreeView.Resources>。但是,对于单击的任何给定节点,出现的菜单项只能在运行时确定。我可以绑定ContextMenu.ItemsSource到我的应用程序中返回 a 的东西MenuItem[],但是为了构建这个数组,我需要访问在 XAML 文件中静态定义的 MenuItems。

我做这一切都错了吗?或者有没有办法做我想做的事?

wpf wpf-controls

3
推荐指数
1
解决办法
1884
查看次数

标签 统计

argparse ×1

cmake ×1

python ×1

wpf ×1

wpf-controls ×1