我能否将Boost的源代码和头文件添加到我的(开源)项目中?

6
Boost许可证是否允许我将所需的源代码添加到我的项目中(当然要附带许可证)?我找不到任何“描述性”的确认。我会有单独的Include / boost和Source / boost目录以便于访问。
PS:由于boost :: filesystem进入了C ++ 0x TR2,而lambda,regex等已经在c ++ 0x TR1中,因此我认为没有理由使用类似realpath,getcwd之类的C函数。它们无论如何都不能很好地工作...
更新:我正在逐个文件夹添加所需文件,但数量巨大。也许最好包括完整的boost dist...

4
我投票关闭此问题,因为它涉及许可或法律问题,而不是编程或软件开发。请参见此处和此处获取详细信息,以及帮助页面获取更多信息。 - JasonMArcher
3个回答

4

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


2
boost提供了一个名为bcp的工具,它可以扫描您的源代码并从boost源代码中提取使用的任何boost头文件。我已经设置了一个脚本,将所需的源代码与我们的代码一起打包。它还会复制我们直接编译到应用程序中的几个不仅是头文件的boost库的源代码文件。这使得在有新版本的boost发布时轻松重新运行脚本。
以下是我们使用的参考脚本: #!/bin/sh BOOST_SRC=.../boost_1_43_0 DEST_DIR=../src/boost TOOLSET= 如果(测试uname =“Darwin”),则TOOLSET =“--toolset = 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

1
我建议您将 Boost 外部链接而不是直接将源代码包含到您的项目中。 除了巨大的依赖问题,外部链接意味着您可以始终引用最新的稳定版本(假设您从存储库检出),而无需在项目中显式覆盖每个旧的源代码。

3
提到最新版本可能很方便,但有时您可能不希望使用它。 Boost库以前也曾有过不兼容的更改,有时代码会变得更大,在受限环境下,如嵌入式设备中,这可能特别有害。 - OregonGhost
1
赞同 - boost库经常在不同版本之间破坏源代码的兼容性。 - JoeG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接