我正在将CMake纳入一个较旧的项目。一个目标是开始遵循良好的现代CMake原理-即根据模块进行思考。现代CMake的一个目标是使模块能够独立于顶层,而顶层会通过add_subdirectory
对其进行依赖。
该项目要做的一件事是定义一个基本上所有子模块都包含的platform.h文件。我认为这是一种反模式,因为它在错误的方向上创建了依赖关系-即较低层的库依赖于最顶层的文件。
我的问题-如果您想告诉子模块在编译时要使用的各种设置,是否有一种现代的CMake方法可以做到这一点?我想这类似于Linux内核如何在kconfig文件中设置值,该文件在make config期间在整个源中进行更新。也是影响子模块的顶层。
编辑: 我知道您可以使用cmake build命令传递定义,但是如果不止几个,这似乎很麻烦。