我可以将Boost源+头文件添加到我自己的(开源)项目中吗?

时间:2010-05-21 08:48:07

标签: c++ boost c++11 licensing

Boost License是否允许将我需要的东西的源代码添加到我的项目中(当然还有许可证?)。我找不到任何“描述性”确认。我会分开Include / boost和Source / boost目录以便于访问。

PS:看到boost :: filesystem进入C ++ 0x TR2,而lambda,regex和whatnot已经在c ++ 0x TR1中,我看不出有任何理由像cx函数那样玩杂耍,getcwd等。无论如何它们都不能很好地运作......

更新:我按文件夹添加所需文件“逐个”文件夹,但数量巨大。也许最好包括完整的boost dist ....

3 个答案:

答案 0 :(得分:4)

是的,你可以这样做。 license非常自由。唯一的条件是,如果您以源代码形式重新分发软件,则需要包含许可证的完整副本。

答案 1 :(得分:1)

我建议链接到外部提升,而不是直接将源包含到您的项目中。 除了巨大的spiderweb依赖问题,在外部链接它们意味着你总是可以引用最新的稳定构建(假设你从存储库中检出),而不会明确地覆盖项目中的每个旧源。

答案 2 :(得分:1)

有一个名为bcp的boost附带的实用程序可以扫描你的源并提取从boost源使用的任何boost头文件。我已经设置了一个脚本,将这个提取到我们的源代码树中,这样我们就可以将我们需要的源和代码打包在一起。它还会复制我们使用的几个只有头文件的boost库的boost源文件,然后直接编译到我们的应用程序中。这样,只要有新版本的boost发布,就可以轻松地重新运行脚本。

供参考,这是我们使用的     #!/ bin / sh的     BOOST_SRC = ... / boost_1_43_0     dest_dir将= .. / src目录/升压     工具包=     if(test uname =“Darwin”)然后         工具包=“ - 工具集=达尔文”     网络

# make bcp if necessary
if ( ! test -x $BOOST_SRC/dist/bin/bcp ) then
    if ( test -x $BOOST_SRC/tools/jam/*/bin.*/bjam ) then
        BJAM=$BOOST_SRC/tools/jam/*/bin.*/bjam
    else
        echo "### Building bjam"
        pushd $BOOST_SRC/tools/jam
        ./build_dist.sh
        popd
        if ( test -x $BOOST_SRC/tools/jam/*/bin.*/bjam ) then
            BJAM=$BOOST_SRC/tools/jam/*/bin.*/bjam
        fi

    fi
    echo "BJAM: $BJAM"
    pushd $BOOST_SRC/tools/bcp
    echo "### Building bcp"
    echo "$BJAM $TOOLSET"
    $BJAM $TOOLSET
    if [ $? == "0" ]; then
        exit 1;
    fi
    popd
fi

if ( ! test -x $BOOST_SRC/dist/bin/bcp) then
    echo "### Couldn't find bpc"
    exit 1;
fi

mkdir -p $DEST_DIR

echo "### Copying boost source"
MAKEFILEAM=$DEST_DIR/libs/Makefile.am
rm $MAKEFILEAM

# copy source libraries
mkdir -p $DEST_DIR/libs/signals/src
cp $BOOST_SRC/libs/signals/src/* $DEST_DIR/libs/signals/src/.
echo -n "boost_sources += " >> $MAKEFILEAM
for f in `ls $DEST_DIR/libs/signals/src | fgrep .cpp`; do
    echo -n "boost/libs/signals/src/$f " >> $MAKEFILEAM
done
echo >> $MAKEFILEAM

echo "### Extracting boost includes"
$BOOST_SRC/dist/bin/bcp --scan --boost=$BOOST_SRC ../src/*/*.[Ch]  $DEST_DIR
if [ $? != "0" ]; then
    echo "### bcp failed"
    rm -rf $DEST_DIR
    exit 1;
fi