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
CMake用户字符串输入_Cmake_Cmake Gui - Fatal编程技术网

CMake用户字符串输入

CMake用户字符串输入,cmake,cmake-gui,Cmake,Cmake Gui,我试图使用CMake通过令牌替换将通用包装转换为特定包装。我希望用户所要做的就是输入一组特定的字符串,让CMake do configure_文件,包装器将读取值并按预期工作 我知道可以使用set设置需要更换的令牌: set(FAV_FOOD "Sushi" CACHE STRING "What is your favorite food?") 以及让用户从一组答案中选择的选项,如: set(MY_SELECTION "Option A" CACHE STRING "Help message

我试图使用CMake通过令牌替换将通用包装转换为特定包装。我希望用户所要做的就是输入一组特定的字符串,让CMake do configure_文件,包装器将读取值并按预期工作

我知道可以使用set设置需要更换的令牌:

set(FAV_FOOD "Sushi" CACHE STRING "What is your favorite food?")
以及让用户从一组答案中选择的选项,如:

set(MY_SELECTION "Option A" CACHE STRING "Help message for this variable")
set_property(
    CACHE MY_SELECTION
    PROPERTY STRINGS
    "Option A" "Option B" "Option C"
)
问题是我不能列举所有有效的答案。CMake有没有办法弹出一个GUI并允许用户用任何字符串回答?我可以让用户在调用make之前在文件中填写这些值,但我希望避免用户在文件中手工操作,我希望提前使用CMake缓存,避免假设用户已经在文件中填写了变量


任何建议都会很有帮助。谢谢。

您的第一个示例是为CMake提供用户指定选项的标准方法,通常包括一些合适的默认值,正如您所演示的那样

您可以省略默认值(传递空字符串),然后检查是否已指定该值,以便在用户尝试配置时生成错误

为了自动提供这些值,用户可以在命令行上使用-D=语法指定这些值:

cmake -DSOME_VAR=some_val <path_to_CMakeLists.txt>
cmake-DSOME\u VAR=some\u val
我通常使用cmake/cmake,我假设您使用的是windows cmake gui,它与cmake非常相似。我不知道使用cmake gui弹出一些额外窗口的方法。但是,似乎可以使用上述选项调用cmake gui。使用此方法,您可以提供用户可以编辑的.bat文件,以便输入您希望他们指定的设置


在我看来,只要您已经让他们运行cmake gui,那么简单地利用您提出的第一个解决方案,让他们以“老式方式”更改gui中的值,确实是最合适的选择。

我认为我将采用的策略是使用Matlab来做一个简单的gui,并将用户的答案保存在cmake脚本中,并在调用cmake时使用-C选项将脚本加载到预构建的缓存中。您在命令行传递值的方法可以工作,但由于在我的例子中变量太多,因此很麻烦。