CMake用户字符串输入
我试图使用CMake通过令牌替换将通用包装转换为特定包装。我希望用户所要做的就是输入一组特定的字符串,让CMake do configure_文件,包装器将读取值并按预期工作 我知道可以使用set设置需要更换的令牌: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
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选项将脚本加载到预构建的缓存中。您在命令行传递值的方法可以工作,但由于在我的例子中变量太多,因此很麻烦。