我正在开发项目,这项功能可以根据客户的不同而开启/关闭。我知道cmake有"选项"语法,但假设我有几个可能具有不同功能的不同项目,如何为每个项目创建预定义配置,这类似于linux内核中的默认配置
项目A: feature1 ON feature2 OFF feature3 OFF
项目B: feature1 OFF feature1 OFF feature1 OFF
当然会有数百个这样的功能....我知道我可以在调用cmake时将其添加为参数,但如果我有数百个并且不容易阅读它就不实用
由于
答案 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
中,并且不会反映回配置文件。