C++ 如何在“conanfile.txt”中有条件地指定需求?

C++ 如何在“conanfile.txt”中有条件地指定需求?,c++,artifactory,dependency-management,conan,C++,Artifactory,Dependency Management,Conan,我必须处理一个跨平台的应用程序,它在Windows上需要一个额外的第三方库,但在Linux上不需要(而且这个库无论如何都不支持Linux)。我已将库打包到一个柯南软件包中,只支持`os=Windows complier=“Visual Studio”。现在如果我把这个库作为 [requires] Library/1.2.3@foo/bar 在我的conanfile.txt中,conan安装将在逻辑上失败,错误为缺少Linux上的预构建包 那么有没有办法在conanfile.txt中有条件地指定

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

[requires]
Library/1.2.3@foo/bar
在我的
conanfile.txt
中,
conan安装
将在逻辑上失败,错误为
缺少Linux上的预构建包

那么有没有办法在
conanfile.txt
中有条件地指定所需的包呢?类似于
Library/1.2。3@foo/bar[os=“Windows”]
。我通读了柯南的文件,但什么也没找到

或者告诉柯南安装忽略错误

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


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

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

在conanfile.txt中添加条件是不可能的,因为这将花费大量的开发工作,而且conafile.py能够处理条件,因为它是一个python脚本


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

如果构建过程由CMake管理,您可以使用两个不同的conanfile.txts。@nada感谢您的评论,我只是想知道我是否可以以某种方式避免使用两个conanfile(有一行差)我会在CGuess或SO ^中编写一个脚本,这样就有一个更优雅的解决方案,确保您仍然可以使用CONANFIL.PY来进行依赖。使用Python文件不需要它来控制构建。@约翰感谢这个建议。它是一个用于其他C++项目迁移的试点项目,使用柯南作为依赖管理器。最后为每个平台推荐了两个txt文件,并鼓励愿意学习python的开发人员编写自己的conanfile.py。