如何使用Boost和Jamroot构建多个目标?

时间:2015-01-23 18:49:24

标签: boost-build

我想创建一个项目,我可以使用define flags选择两个不同的目标。

例如,在我的代码中,我有多个部分

#ifdef LINUX
...
#else
...
#

在Jamroot文件中选择两个目标之间的最佳做法是什么?甚至可能吗?我应该在根目录中创建两个不同的Jamroot文件并使用bjam调用它们吗?根据我在手册部分中找到的内容,无法使用特定的Jamroot文件调用 bjam

假设我的示例Jammroot文件看起来像这样;

project myproj_linux
        : 
    requirements 
        <define>LINUX
;

exe myprog_linux:
    test/Jamfile
    myprog.cpp
    ;

是否可以在同一个文件中添加额外的项目,例如myproj_ose,或者应该如何完成?或者我可以使用不同的Jamfiles,例如Jamroot根据指定的目标调用的子目录中的Jamfile.linux?

如果我的任何建议都不可能,那么这个问题怎么解决?

1 个答案:

答案 0 :(得分:1)

我想你想要这样的东西:

project myproj
  : requirements
    <target-os>linux:<define>LINUX
    <target-os>windows:<define>WINDOWS
  ;

exe myprog : test/Jamfile myprog.cpp ;

您可以在docs中详细了解条件要求。但这只是用不同的选项构建相同的程序。它也可以改变variations of a target to build。例如:

exe myprog : test/Jamfile myprog_linux.cpp : <target-os>linux ;
exe myprog : test/Jamfile myprog_windows.cpp : <target-os>windows ;