CMake 用户字符串输入
CMake User String Input
我正在尝试使用 CMake 通过令牌替换将通用包装器转换为特定包装器。我希望用户所要做的就是输入一组特定的字符串,让 CMake 执行 configure_file,包装器将读取值并按预期工作。
我知道可以使用 set 来设置需要替换的令牌:
set(FAV_FOOD "Sushi" CACHE STRING "What is your favorite food?")
以及让用户 select 从一组答案中选择的选项,如下所示:
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 弹出一些额外的 windows。但是,似乎可以使用上述选项 as described here 调用 cmake-gui。使用此方法,您可以提供用户可以编辑的 .bat 文件,以便输入您希望他们指定的设置。
在我看来,只要您已经拥有它们 运行 cmake-gui,那么只需利用您提出的第一个解决方案并让它们更改 gui "the old fashioned way" 中的值即可真的是最合适的选择。
我正在尝试使用 CMake 通过令牌替换将通用包装器转换为特定包装器。我希望用户所要做的就是输入一组特定的字符串,让 CMake 执行 configure_file,包装器将读取值并按预期工作。
我知道可以使用 set 来设置需要替换的令牌:
set(FAV_FOOD "Sushi" CACHE STRING "What is your favorite food?")
以及让用户 select 从一组答案中选择的选项,如下所示:
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 弹出一些额外的 windows。但是,似乎可以使用上述选项 as described here 调用 cmake-gui。使用此方法,您可以提供用户可以编辑的 .bat 文件,以便输入您希望他们指定的设置。
在我看来,只要您已经拥有它们 运行 cmake-gui,那么只需利用您提出的第一个解决方案并让它们更改 gui "the old fashioned way" 中的值即可真的是最合适的选择。