CMake用户字符串输入

时间:2015-06-19 14:42:17

标签: cmake cmake-gui

我试图通过令牌替换使用CMake将通用包装器转换为特定包装器。我希望所有用户必须做的是输入一组特定的字符串,让CMake执行configure_file,然后包装器会读取值并按预期​​工作。

我知道可以使用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缓存并避免假设用户已经填写了文件中的变量。

任何建议都会有所帮助。感谢。

1 个答案:

答案 0 :(得分:2)

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

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

为了自动提供这些值,用户可以使用-D = syntax:

在命令行上对它们进行特定
cmake -DSOME_VAR=some_val <path_to_CMakeLists.txt>

我通常使用cmake / ccmake,我假设你使用的是windows cmake-gui,它与ccmake非常相似。我知道没有方法可以使用cmake-gui弹出一些额外的窗口。但是,似乎可以使用上述选项as described here调用cmake-gui。使用此方法,您可以提供用户可以编辑的.bat文件,以便输入您希望他们指定的设置。

在我看来,只要你已经让他们运行cmake-gui,那么只需使用你的第一个提议的解决方案并让他们以“老式的方式”改变gui中的值,这真的是最合适的选择