介子找不到cmake子目录

问题描述

在我的一个 meson.build 文件中,我有代码需要为 spdlog 生成依赖项。

libspd = cmake.subproject('spdlog')
spd_dep = libspd.dependency('spd_dep')

有问题的 meson.build 位于名为 vendor 的目录中,spdlog 目录也位于其中。

./
  ...
  vendor/
    meson.build
    spdlog/
      CMakeLists.txt
      ...

但是,当我配置项目时,介子抛出此错误Neither a subproject directory nor a spdlog.wrap file was found.。为什么是这样?显然,spdlog 目录与meson.build 中的目录位于同一目录中,对吗?

另外,我知道我应该使用包装文件,但由于限制,这是不可能的。我也在 IRC 上问过,但没有人回复,而且我在截止日期前。

解决方法

介子为子项目预定义了位置 - All subprojects must be in subprojects directory。所以,你应该有结构:

  vendor/
    meson.build
    subprojects/
      spdlog/
        CMakeLists.txt