首页 > 解决方案 > CMake 顶级配置子模块

问题描述

我正在将 CMake 引入一个较旧的项目。一个目标是开始遵循良好的现代 CMake 原则——即从模块的角度思考。现代 CMake 的一个目标是让模块能够独立于顶层之外,顶层会通过add_subdirectory.

该项目所做的一件事是定义一个基本上所有子模块都包含的 platform.h 文件。我认为这是一种反模式,因为它在错误的方向上创建了依赖关系——即较低层的库依赖于最顶层的文件。

我的问题 - 如果你想告诉子模块在编译时使用的各种设置,有没有现代的 CMake 方法来做到这一点?我想这类似于 Linux 内核在 kconfig 文件中设置值的方式,这些文件在 make config 期间在整个源代码中更新。那里也是影响子模块的顶层。

编辑:我知道您可以使用 cmake build 命令传递定义,但如果不止几个,它似乎很麻烦。

标签: cmakebuild-system

解决方案


推荐阅读