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

ein*_*ica 5 list cmake set-operations

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

如何生成此类交集、差异或并集列表?

注意:输出不需要重复,输入不需要重复

ein*_*ica 7

假设我们的列表位于变量S和中T

\n\n

对于工会,请写:

\n\n
list(APPEND union_list ${S} ${T})\nlist(REMOVE_DUPLICATES union_list)\n
Run Code Online (Sandbox Code Playgroud)\n\n

对于集合差,写:

\n\n
list(APPEND S_minus_T ${S})\nlist(REMOVE_ITEM S_minus_T ${T})\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后我们使用一些集合恒等式通过对称差来获得交集:

\n\n
    \n
  • S\xe2\x88\xa9T = (S\xe2\x88\xaaT) \xe2\x88\x96 (S\xe2\x88\x86T​​)
  • \n
  • S\xe2\x88\x86T​​ = (S\xe2\x88\x96T) \xe2\x88\xaa (T\\S)
  • \n
\n