将 `conan.cmake` 与 `conan_multi` 生成器一起使用,缺少 build_type 参数?

Using `conan.cmake` with `conan_multi` generator, missing build_type argument?

我正在尝试使用 conan.cmake. I am also following along with the cmake_multi 文档使多配置 cmake 构建工作。

似乎在 cmake_multi 的文档中,他们要求您同时通过 -g cmake_multi-s build_type={type} ({type} being Release/Debug/...)。

但是,在 conan.cmake 中,调用 conan install -g cmake_multi ... 时似乎没有传递当前的 build_type

我现在遇到这样一种情况,如果我 运行 配置 "Release;Debug" conan 报告丢失了一堆包

Requirements
    boost/1.71.0@conan/stable from 'my_repo' - Cache
    libconfig/1.6@internal/custom from 'my_repo' - Cache
    ...
Packages
    boost/1.71.0@conan/stable:5b939a5d59f5432d9263459d17f2acb1535629bd - Missing
    libconfig/1.6@internal/custom:ef44119b64b51a15f7b334090b2ff53fddcc38df - Missing
    ...

但是,如果我编辑 conan.cmake 以在末尾也传递 "-sbuild_type=${CMAKE_BUILD_TYPE}" conan_args,它能够找到我的 Release 和 Debug 包。

谁能看出我在这里做错了什么?我没有在我的柯南个人资料中指定 build_type,我的设置中也没有设置。

在多读了几次 conan.cmake 的源代码后,我发现可以让它传播构建类型,你只需要使用 PROFILE_AUTO 参数到 conan_cmake_run.

conan_cmake_run(
   PROFILE ${CONAN_PROFILE}
   CONFIGURATION_TYPES ${CONFIGURATION_TYPES}
   PROFILE_AUTO build_type  # Use build_type as detected by CMake, override any values in the profile
   BUILD outdated
)