CMake 用户字符串输入

标签 cmake cmake-gui

我正在尝试使用 CMake 通过 token 替换将通用包装器转换为特定包装器。我希望用户所要做的就是输入一组特定的字符串,让 CMake 执行configure_file,然后包装器将读取这些值并按预期​​工作。

我知道可以使用 set 来设置需要替换的 token :

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/ccmake,并且我假设您使用的是 windows cmake-gui,它与 ccmake 非常相似。我知道没有方法可以使用 cmake-gui 弹出一些附加窗口。但是,似乎确实可以使用上述选项 as described here 调用 cmake-gui。 。使用此方法,您可以提供一个 .bat 文件供用户编辑,以便输入您希望他们指定的设置。

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

关于CMake 用户字符串输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30940986/

相关文章:

cmake - 使用 CMake 时忽略外部模块中的警告

opencv - Cmake gui 重置参数。如何在cmake gui中设置参数?

c++ - 如何在 CmakeList 中导入 Qtquickcontrol

powershell - CMake - 如何轻松添加缺少的库?

cmake - doxygen INSTALL 无法将文件 ".../doxygen/build/bin/doxygen"复制到 "/usr/local/bin/doxygen"

cmake - 如何将 cmake 指向库的特定目录?

c++ - CMake 嵌套库

cmake - 如何在 Ubuntu 上安装 cmake-gui 最​​新版本

c++ - 如何从 cmake(3.10 版本)将 CUDA 架构设置为 compute_50 和 sm_50?

opencv - 为什么 CLion 不将我的项目与 Windows 版 OpenCV 链接?