configuration - 如何加载 CMake 项目的用户特定配置

标签 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)

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

最佳答案

使用 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/

相关文章:

gcc - 如何在 cmake 中仅针对 DEBUG build设置 GLIBCXX_FORCE_NEW=1?

linux - 如何使 Cmake 全局可用

python-2.7 - 我应该在哪里安装 CMake?

c++ - 在调用 cmake 之前删除构建文件夹中的所有内容是否合理?

catkin_make 中的 cmake 版本与全局 cmake 版本不同?

mysql - 将 skip-grant-tables 添加到 MySQL my.ini 似乎不起作用

configuration - 使用 Chef/Puppet 并管理手动更改

configuration - 从Geoserver导出图层配置

apache - 在我的情况下如何解决 svn : E195019: Redirect cycle detected,?

svn - 将每个新文件添加到 svn,除了那些被忽略的文件