0

我想有条件地使用库(有替代品)作为目标。我不想添加诸如<usefoo>yes:<library>foo处处之类的条件,但更喜欢创建传播功能。但是,b2 会为以下卡纸生成错误。

import feature ;

feature.feature usefoo : yes : propagated composite optional ;
feature.compose <usefoo>yes : <library>foo ;

lib foo : : : : <include>foo <define>USE_FOO ;
lib foo : : <toolset>gcc-10 : : <include>foo_gcc10 <define>USE_FOO ;

lib bar ;
# Undesirable because there may be lots of bars.
# lib bar : : <usefoo>yes:<library>foo ;

exe test1 : test.cc : <library>bar ;
exe test2 : test.cc : <usefoo>yes <library>bar ;
error: Recursion in main target references
error: the following target are being built currently:
error: ./test2 ./bar ./foo ./foo

我也不能把 foo 的要求放进去<usefoo>yes。似乎feature.compose不接受有条件的要求。这样做的正确方法是什么?

4

1 回答 1

0

feature.compose <usefoo>yes : <library>foo ;将要求应用于所有内容,因此库foo将获得<library>foo创建无法解决的依赖循环的要求。

于 2021-08-24T14:54:12.330 回答