1

我正在开发一个项目,该项目将具有一些可以根据客户打开/关闭的功能。我知道 cmake 具有“选项”语法,但假设我有几个不同的项目可能具有不同的功能,我如何为每个项目创建预定义的配置,这类似于 linux 内核中的默认配置

项目A:feature1 ON feature2 OFF feature3 OFF

项目 B:feature1 关闭 feature1 关闭 feature1 关闭

当然会有数百个这样的功能....我知道我可以在调用 cmake 时将其添加为参数,但如果我有数百个并且不容易阅读,那就不实用了

谢谢

4

1 回答 1

4

CMake 有关于initial-cache - 脚本的概念,它在 main 之前执行CMakeLists.txt并且可以填充缓存的参数(和选项)。cmake(1) 文档中对应选项的描述:

-C <initial-cache>

预加载脚本以填充缓存。

当 cmake 第一次在空的构建树中运行时,它会创建一个CMakeCache.txt文件并使用项目的可自定义设置填充它。此选项可用于指定在第一次通过项目的 cmake 列表文件之前从中加载缓存条目的文件。加载的条目优先于项目的默认值。给定文件应该是包含使用CACHE选项的SET命令的 CMake 脚本,而不是缓存格式文件。

因此,您可以为项目 A 创建配置文件,例如:

conf/projectA.cmake

option(feature1 "Feature 1" ON)
option(feature2 "Feature 2" OFF)
option(feature3 "Feature 3" OFF)

并使用它

cmake -C <src-dir>/conf/projectA_conf.cmake <src-dir>

请注意,与 Linux 内核的配置文件不同,这种方式可以只存储初始默认)配置。用户执行的所有缓存修改仅存储在配置文件中CMakeCache.txt,不会反映回配置文件。

于 2016-10-13T08:10:34.033 回答