Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Build CMake多选项设置_Build_Cmake_Multiple Choice_Multiplechoicefield - Fatal编程技术网

Build CMake多选项设置

Build CMake多选项设置,build,cmake,multiple-choice,multiplechoicefield,Build,Cmake,Multiple Choice,Multiplechoicefield,我正在做一个用CMake构建的项目,所以我正在为它编写一个CMakeLists.txt。在这个文件中,我希望有一个(缓存的)CMake变量,它只能接受几个选项中的一个(我会以某种方式指定),而不是任何任意字符串。为了简单起见,让我们将其视为一个字符串,它可以接受“红色”、“绿色”或“蓝色”,但除此之外没有其他内容 除了设置任意字符串然后检查其有效性之外,我能用最新的CMake版本实现这一点吗?答案可以在Kitware的一篇博客文章中找到,该文章名为: 它的工作原理如下:对于要约束到某个值集的每个

我正在做一个用CMake构建的项目,所以我正在为它编写一个
CMakeLists.txt
。在这个文件中,我希望有一个(缓存的)CMake变量,它只能接受几个选项中的一个(我会以某种方式指定),而不是任何任意字符串。为了简单起见,让我们将其视为一个字符串,它可以接受“红色”、“绿色”或“蓝色”,但除此之外没有其他内容


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

答案可以在Kitware的一篇博客文章中找到,该文章名为:

它的工作原理如下:对于要约束到某个值集的每个缓存项,通常使用默认值将其定义为
字符串
缓存变量,例如:

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_属性调用之后,cmake gui知道要显示一个下拉组合框来编辑“BaseName”缓存项,并且它知道该项应该显示的四个有效选项是
二进制
八进制
十进制
十六进制


你能详细说明你想做什么吗?您是否正在交付启用CMake的项目,并希望限制
选项()
CMake gui
中可能选择的值?您是否正在编写CMake帮助器/包装器函数,并希望限制传递参数的值?您是否试图阻止对某个变量进行
set()
调用以获取任何其他预定义的值集?@Florian:请参阅编辑。而且,是的,我希望在运行ccmake(或cmakegui)时显示类似列表的内容。