如何将 CMake 列表作为集合进行操作?

How do I manipulate CMake lists as sets?

在CMake中,列表被广泛使用。有时你有两个项目列表(基本上是字符串),你想考虑它们的交集、差异或联合。就像我刚刚想到的

如何生成这样的交集、差集或并集列表?

注意:输出不能重复,输入不能重复

假设我们的列表在变量 ST 中。

对于工会,写:

list(APPEND union_list ${S} ${T})
list(REMOVE_DUPLICATES union_list)

设置差,写:

list(APPEND S_minus_T ${S})
list(REMOVE_ITEM S_minus_T ${T})

然后我们用一些集合恒等式通过对称差求交集:

  • S∩T = (S∪T) ∖ (S∆T)
  • S∆T = (S∖T) ∪ (T\S)