17

我正在开发一个用 CMake 构建的项目,所以我正在CMakeLists.txt为它写一个。在这个文件中,我想要一个(缓存的)CMake 变量,它只能采用几个选项之一(我会以某种方式指定),而不是任何任意字符串。为简单起见,让我们将其视为一个可以采用“red”、“green”或“blue”的字符串——但仅此而已。

除了设置任意字符串然后检查其有效性之外,我可以使用最近的 CMake 版本来实现这一点吗?

4

1 回答 1

21

答案可以在 Kitware 的一篇名为“Constraining Values with ComboBoxes in CMake (cmake-gui)”的博文中找到:

所以它是这样工作的:对于你想要限制为一组值的每个缓存条目,像往常一样使用默认值作为STRING缓存变量定义它,例如:

set(BaseName "binary" CACHE STRING "BaseName chosen by the user at CMake configure time")

现在,在使用其初始默认值定义缓存条目之后,定义其值应被约束的字符串集:

set_property(CACHE BaseName PROPERTY STRINGS binary octal decimal hexadecimal)

在 set_property 调用之后,cmake-gui 知道要呈现一个下拉组合框来编辑“BaseName”缓存条目,并且它知道它应该呈现的该条目的四个有效选择是binaryoctal和。decimalhexadecimal

于 2017-12-02T21:22:41.503 回答