使用bjam构建具有相同源的两个库

时间:2016-09-08 08:00:39

标签: c++ boost bjam

我正在使用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

是否有人知道如何让目标的中间文件转到其他位置? 任何人都可以想到一个更好的方法来实现我想要做的事情吗?

1 个答案:

答案 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符号。一旦定义了特征,还有其他方法可以获得等效结果。