c++ - 如何在 `conanfile.txt` 中有条件地指定要求?

标签 c++ artifactory dependency-management conan

我必须处理一个跨平台应用程序,该应用程序在 Windows 上需要额外的第 3 方库,但在 Linux 上不需要(而且该库无论如何都不支持 Linux)。我已将库打包到 Conan 包中,仅支持 `os=Windows complier="Visual Studio"。现在,如果我把这个库作为

[requires]
Library/1.2.3@foo/bar

在我的 conanfile.txt 中,conan install 在 Linux 上逻辑上会失败并显示错误 Missing prebuilt package

那么有没有办法在conanfile.txt中有条件地指定需要的包呢?类似于 Library/1.2.3@foo/bar [os="Windows"]。我通读了柯南文档,但一无所获。

或者告诉conan install忽略错误?

或者我唯一的运气是在两个平台上使用两个不同的conanfile.txt

我不能使用 conanfile.py,因为构建过程不是由 Conan 管理的,只有依赖项。

最佳答案

我会说在你的情况下最好的选择是 conanfile.py,但由于你无法使用它,你将需要保留两个 conanfile.txt,每个平台一个。

不可能在conanfile.txt中添加条件,因为这会花费很大的开发精力,而conafile.py是python脚本,可以处理条件。

@nada 解决方案很好,你可以根据你的操作系统使用CMake调用柯南,也可以试试cmake-conan ,这听起来更适合您的特定场景。

关于c++ - 如何在 `conanfile.txt` 中有条件地指定要求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57273880/

相关文章:

visual-studio - 无法从 Artifactory 中托管的 NuGet 流中找到包

playframework - Play Framework 需要很长时间来解决依赖关系

maven - 如何在 Gradle 中排除与分类器(平台版本)的依赖关系?

C++实例化在另一个没有指针的类构造函数中没有默认构造函数的对象

c++ - 结构错误表达式必须有 bool 类型

maven - 在 Jenkins 声明性管道的不同阶段重用对象/属性

angular - 在不同的 token 下提供相同的服务实例

c++ - 动态分配数组的矩阵乘法;结果不正确

c++ - protected 成员是否可以在非直系后代中访问?

ios - 将 pod 部署到 artifactory 的理想方式是什么?