CMake列表基本上只是以分号分隔的字符串,但如果将这样的变量传递给命令,它会扩展为多个参数 - 例如,
set(FLAGS f1 f2 f3)
# now FLAGS == 'f1;f2;f3'
add_custom_command(
...
COMMAND my_cmd ${FLAGS}
...
)
Run Code Online (Sandbox Code Playgroud)
会正确地打电话my_cmd f1 f2 f3.
现在,如果我这样做
set_target_properties(
myTarget PROPERTIES
LINK_FLAGS "${LD_FLAGS}"
)
Run Code Online (Sandbox Code Playgroud)
扩展没有发生,我最终得到一个包含分号的LD_FLAG - 无用,而不是将其扩展为以空格分隔的字符串.
有没有办法让它当我将列表传递给LINK_FLAGS属性(或任何属性)时,它会扩展为多个参数而不是一个?
谢谢,丹
我注意到iTerm2提供了非常方便的功能,使用"Option key as + ESC"(或者作为meta,但显然已经过时了).
我尝试了它们两个,选项键在Bash(set -o emacs模式)和Emacs中按预期工作,但在Vim中没有.因此,我不能使用任何"M-"绑定.我发现的是:
"M-"映射在MacVim(7.3.53)中完美运行,但这不是在控制台之外,而是在这个问题的范围内.
我对如何使这些映射在Vim,iTerm2或Terminal下运行感兴趣.
我的规格:
我正在尝试匹配在使用动作时由vim找到的特定(和匹配之间的内容.)%
更具体地说,我正在寻找一个看起来像这个假设的正则表达式/someKeyword (\{pair}\(.*\))\{pair}/,如果有这样的修饰符\{pair},当应用于正则表达式中的两个正好两个字符时,使得第二个仅匹配,如果它是与第一个匹配的括号(%-明智的).
我正在寻找的模式应该匹配第一个括号的内部内容someKeyword(nb应该处理的代码总是正确括号),如下例所示:
对于子someKeyword ("aaa")匹配将匹配"aaa".同样someKeyword ("aaa)")会匹配"aaa)"并someKeyword(("double-nested stuff"))匹配("double-nested stuff")
但在以下情况下:
(
someKeyword("xyz"))
Run Code Online (Sandbox Code Playgroud)
它应该匹配的地方"xyz".
有没有办法在正则表达式中使用vim的匹配括号功能?如果没有,还有什么其他解决方案可以实现这一目标?
编辑1:匹配的内容可能跨越几行.
我有这个OO情况,我试图在Ocaml中实现:两个类,X1并且X2,子类型X(X1 <: X和X2 <: X),我想写一个动态返回X一个X1或将来的函数X2.
但是我听说它通常是很好的避免OCaml中类和使用的模块代替,所以我想代表我的问题是这样的(过于简化,但仍使点):两个模块X1和X2,我想我的功能之间进行动态决定返回一个X1.t或一个X2.t.
module type X = sig
type choice
type t
(* some methods we don't care about in this instance, like
val modifySomething : t -> t *)
end
module Xbase = struct
type choice = Smth | SmthElse
end
module X1 = (
struct
include Xbase
type t = { …Run Code Online (Sandbox Code Playgroud)