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

Configuration 如何为CMake项目加载特定于用户的配置,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) 并调用includemyConfigfile 但我想知道他们是否是一种类

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

我可以使用如下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)
并调用includemyConfigfile


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

使用CMake提供的初始缓存选项。您可以使用Cache`和call设置的正确格式存储选项

cmake -C <cacheFile> <pathToSourceDir>
您需要预先设置这三个变量。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

cmake -C cacheFile.txt ..
输出是

loading initial cache file ../cacheFile.txt
[..]
path/to/lib/one / dont_want_to_bother_setting_this_option / 42
文件:

加载外部缓存文件 此外,CMake提供了一种读取由另一个项目创建的缓存文件的方法。该命令是load_cache。您可以使用它从外部缓存加载变量,或者将它们复制到当前项目的缓存中


文档:

来自您指出的文档:>给定的文件应该是包含使用缓存选项的SET命令的CMake脚本,而不是缓存格式文件。奇怪的错误。。。CMake错误:源目录D:/1-build-dev/qt python CMake/CMakeCache2.txt是一个文件,不是目录。谢谢,回答得很好!。但我主要想知道的是,它们是否是一种读取缓存类文件的方法。包含此类语句:option1:STRING=don\u想\u打扰\u设置\u此\u选项等。它已在cmake中实现,因为它读取CMakeCache.txt!但是为什么不能使用这个功能呢?很好!这正是我们想要的。
loading initial cache file ../cacheFile.txt
[..]
path/to/lib/one / dont_want_to_bother_setting_this_option / 42