我正在使用Boost的bjam,我试图从同一个Jamfile构建同一个库的两个不同版本。需要使用定义的宏来构建库的一个版本以启用特殊功能。我希望在同一个最终位置实现两个不同的名称库。
举例来说,
var d = new Date();
var scatterChart = new Chart(ctx, {
type: 'line',
data: {
datasets: [{
label: 'Scatter Dataset',
data: [{
x: new Date().setDate(d.getDate()-5),
y: 0
}, {
x: new Date(),
y: 10
}, {
x: new Date().setDate(d.getDate()5),
y: 5
}]
}]
},
options: {
scales: {
xAxes: [{
type: "time",
time: {
format: "HH:mm",
unit: 'hour',
unitStepSize: 2,
displayFormats: {
'minute': 'HH:mm',
'hour': 'HH:mm'
},
tooltipFormat: 'HH:mm'
},
gridLines: {
display: false
}
}],
}
}
});
问题在于lib a
: [glob a.cpp]
;
lib a_special
: [glob a.cpp]
: <define>SPECIAL_FUNCTIONALITY
;
,即从a.o
生成的目标文件,正在生成两次 - 每个目标一次。我从bjam获得的实际错误是
a.cpp
是否有人知道如何让目标的中间文件转到其他位置? 任何人都可以想到一个更好的方法来实现我想要做的事情吗?
答案 0 :(得分:1)
定义为free, and incidental, features,不会影响构建变体。您需要做的是创建一个非偶然的功能,该功能描述了改变最终构建的属性。例如:
import feature : feature ;
feature special : off on : propagated ;
lib a : a.cpp : <special>off ;
lib a_special : a.cpp : <special>on <special>on:<define>SPECIAL_FUNCTIONALITY ;
上面使用目标要求来定义在您要求特殊功能时构建哪个库。它还使用条件属性来定义特殊库上的predef符号。一旦定义了特征,还有其他方法可以获得等效结果。