如何为CMake项目加载特定于用户的配置

时间:2017-02-20 17:28:24

标签: configuration cmake

我喜欢使用设置多个缓存变量的配置文件。目的是为计算机上运行的每个项目重用它,或者为测试或特殊目的选择不同的库版本。

我可以使用像这样的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)

但我想知道它们是否是类似缓存的方式,以及管理用户/设置特定配置的最佳实践。

1 个答案:

答案 0 :(得分:2)

使用CMake提供的初始缓存选项。您以正确的格式(set with 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