介子依赖 catch22 和对目标输出的延迟访问



我们想介绍Meson来构建我们现有的C++应用程序。我们的结构如下:

  • Wie 有 8 个主要模块 (mod_X(
  • 每个
  • 模块都有 20-40 个子目录,每个子目录有 5-100 个 cpp 文件;在库和可执行文件中分开。
  • mod_INFRA/apps/myparser有一个创建代码生成器可执行文件的目标
    • 这仅取决于mod_INFRA/libs/A
  • 代码生成器必须应用于所有模块和子目录(包括mod_INFRA本身(中众多子目录中的某些文件 (*.rules(。
  • 生成的源代码必须与目标一起编译和考虑subdir_X

我想要实现的目标:

  • root/meson.build定义一个通用且可重用的custom_targetgenerator,我可以根据需要在每个模块和子目录中调用/应用。

问题:

  • root/meson.build中,我们定义了公共变量,如编译器标志等,并且我们对每个模块进行subdir(‘mod_INFRA’)。在mod_INFRA/meson.build我为每个子目录做subdir(‘apps/xyz’), subdir(‘libs/abc’),等。没关系
  • 但是,我很难在root/meson.build中定义custom_target or generator。在subdir('mod_INFRA')之前,所需的可执行文件尚不可用。subdir(..)之后为时已晚,因为我已经需要生成器来构建mod_INFRA中的其他子目录中的文件。

一种可能的解决方案可能是按目标名称延迟解析可执行文件的"代理"。 例如,如果我能做到(伪代码(:generator(getTargetOutput(‘myparser’), …).但我无法发现这是否可用。

关于如何在不完全重组目录结构的情况下解决它的任何其他想法?

- 介子构建 - mod_INFRA - 介子构建 -应用程序 - 介子构建 - Myparser - 介子构建 - 库 - subdir_INFRA_A(构建 myparser 需要( - 介子构建 - subdir_INFRA_B - 介子构建 - subdir_INFRA_C(需要解析器来生成代码( - 介子构建 - mod_A - 介子构建 - subdir_A_A(需要解析器来生成代码( - 介子构建 - subdir_A_B(需要解析器来生成代码( - 介子构建 - mod_B ...

有人建议:从顶层,你能在回到顶层之前,直接进入"mod_INFRA/libs/subdir_INFRA_A"和"apps/myparser"目录来构建它们吗? 那起到了作用,

相关内容

  • 没有找到相关文章

最新更新