如何在cmake中创建一个linux内核的.config

时间:2016-10-13 07:38:33

标签: linux cmake kbuild

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

项目A: feature1 ON feature2 OFF feature3 OFF

项目B: feature1 OFF feature1 OFF feature1 OFF

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

由于

1 个答案:

答案 0 :(得分:3)

CMake关于 initial-cache - 脚本的概念,该脚本在主CMakeLists.txt之前执行,并且可能填充缓存的参数(和选项)。 cmake(1) documentation中对应选项的说明:

-C <initial-cache>

  

预加载脚本以填充缓存。

     

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

因此,您可以为项目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中,并且不会反映回配置文件。