Boost.Build最佳实践,为项目引入预先构建的库

时间:2009-09-18 18:10:17

标签: c++ boost bjam boost-bjam

我们目前使用这样的`lib'将一个外部预建库引入项目中:

lib ace_lib_static : : <name>libboost_ace-vc80-mt-sgd.lib <variant>debug <toolset>msvc <address-model>64
                <search>../lib/ACE_wrappers/lib64
                ;
lib ace_lib_static : : <name>libboost_ace-vc80-mt-s.lib <variant>release <toolset>msvc <address-model>64
                <search>../lib/ACE_wrappers/lib64
                ;

lib ace_lib_static : : <name>libboost_ace-vc80-mt-sgd-5_6_8.lib <variant>debug <toolset>msvc 
    <search>../lib/ACE_wrappers
    ;

lib ace_lib_static : : <name>libboost_ace-vc80-mt-s-5_6_8.lib <variant>release <toolset>msvc 
    <search>../lib/ACE_wrappers
    ;

project myProject
: requirements <include>.
<include>../lib/ACE_wrappers
<define>ACE_AS_STATIC_LIBS
...

要在项目中正确使用ace_lib_static,我们必须将块复制到项目的jamfile中。请注意,它定义了文件名,搜索目录,包含目录和宏。这仅适用于VC 8.0。如果我们添加对其他编译器的支持,那么块就更大了。

有没有更好的方法在boost.build中引入外部预建lib?理想情况下,我们希望项目jamfile可以引用一个单独的jamfile,并添加几行以使其可用于项目。

1 个答案:

答案 0 :(得分:4)

您可以在任何目录中创建一个名为Jamroot的新文件,其中包含上面的“lib”定义。然后,您的项目可以:

   use-project /ace : <location-to-that-directory> ;

   exe a : a.cpp : /ace//ace_lib_static ;

我还建议您将../lib/ACE_wrappers添加到使用要求中,以便引用/ ace // ace_lib_static将自动添加包含。

HTH, 沃洛佳