我喜欢使用设置多个缓存变量的配置文件。目的是为机器上运行的每个项目重用它,或者选择不同的库版本进行测试或特殊目的。
我可以使用像这样的 CMake 文件来实现它:
set(path_to_lib_one path/to/lib/one)
set(option1 dont_want_to_bother_setting_this_option)
set(option2 that_option_have_to_be_set_again)
并调用include(myConfigfile)
。
但我想知道它们是否是一种类似缓存的方式,以及管理用户/设置特定配置的最佳实践是什么。
最佳答案
使用 CMake 提供的初始缓存选项。您以正确的格式存储选项(使用
CACHE`设置)并调用
cmake -C <cacheFile> <pathToSourceDir>
独立示例
CMakeLists.txt
看起来像
project(blabla)
cmake_minimum_required(VERSION 3.2)
message("${path_to_lib_one} / ${option1} / ${option2}")
并且您想要预先设置三个变量。 cacheFile.txt
看起来像
set(path_to_lib_one path/to/lib/one CACHE FILEPATH "some path")
set(option1 "dont_want_to_bother_setting_this_option" CACHE STRING "some option 1")
set(option2 42 CACHE INT "and an integer")
以及您的 CMake 调用(来自源目录下的目录 build
)
cmake -C cacheFile.txt ..
输出为
loading initial cache file ../cacheFile.txt
[..]
path/to/lib/one / dont_want_to_bother_setting_this_option / 42
文档: https://cmake.org/cmake/help/latest/manual/cmake.1.html#options
加载外部缓存文件
此外,CMake 提供了一种读取由另一个项目创建的缓存文件的方法。该命令是load_cache
。您可以使用它从外部缓存加载变量或将它们复制到当前项目的缓存中。
文档:https://cmake.org/cmake/help/latest/command/load_cache.html
关于configuration - 如何加载 CMake 项目的用户特定配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42350850/