我有一个库项目(稍后会添加更多(,"通用代码"拆分成自己的项目。 所以目录看起来像:
- 托普迪尔
- 共同库
- 库1
- 库2
CommonLib 和 Lib1 是单独的 git 存储库。 我不希望 topdir 本身有任何受控文件。
如何制作 mason.build 文件,使 Lib1 依赖于 CommonLib? 两组文件同时进行编辑,因此它不像首先安装的特定版本的依赖项。
declare_dependency()
的主要用途正是这个。
例如
CommonLib_headers = include_directories('CommonLib/include/')
CommonLib = library('commonlib', include_directories: CommonLib_headers)
dep_CommonLib = declare_dependency(link_with: CommonLib, include_directories: CommonLib_headers)
Lib1 = library('lib1', lib1_sourcefiles, dependencies: [dep_CommonLib])
CommonLib_headers
- 表示与 CommonLib 库交互所需的标头,例如函数原型
CommonLib
- 表示实际的 CommonLib 库(在介子中,这称为构建目标(
dep_CommonLib
将 CommonLib- 表示为项目中其他目标的依赖项,您可以将其视为"另一个目标使用 CommonLib 所需的一切"——在这种情况下,它是需要构建的实际库 CommonLib,及其头文件
请注意,例如,将可执行文件与Lib1
build 对象链接也不会自动将它们链接到CommonLib
,您必须手动指定。
换句话说,使dep_CommonLib
成为Lib1
的依赖关系就像说:"如果dep_CommonLib
指定的任何组件发生变化,也相应地重建 Lib1"。