C++ 我可以添加Boost-source+;我自己(开源)项目的头文件?

C++ 我可以添加Boost-source+;我自己(开源)项目的头文件?,c++,boost,c++11,licensing,C++,Boost,C++11,Licensing,Boost许可证是否允许只将我需要的东西的源代码添加到我的项目中(当然还有许可证?)。我找不到任何“描述性”确认。我会有单独的Include/boost和Source/boost目录,以便于访问 PS:鉴于boost::filesystem将进入C++0x-TR2,而lambda、regex和其他东西已经进入C++0x-TR1,我看不出有任何理由与realpath、getcwd等C函数进行交互。不管怎样,它们都不好用 更新:我正在一个文件夹一个文件夹地添加所需文件,但数量巨大。也许最好包含完整的

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

PS:鉴于boost::filesystem将进入C++0x-TR2,而lambda、regex和其他东西已经进入C++0x-TR1,我看不出有任何理由与realpath、getcwd等C函数进行交互。不管怎样,它们都不好用


更新:我正在一个文件夹一个文件夹地添加所需文件,但数量巨大。也许最好包含完整的boost dist…

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

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

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

作为参考,以下是我们使用的 #!/垃圾箱/垃圾箱 BOOST\u SRC=…/BOOST\u 1\u 43\u 0 DEST_DIR=../src/boost 工具集= 如果(测试
uname
=“达尔文”),则 TOOLSET=“--TOOLSET=darwin” fi


参考最新版本可能很方便,但在某些情况下,您可能不希望这样做。Boost在过去也有突破性的变化,有时代码会变得更大,这在受限环境中可能特别有害,就像嵌入式设备一样。第二个boost库经常会破坏不同版本之间的源代码兼容性。我投票将这个问题作为离题来结束,因为它涉及许可或法律问题,而不是编程或软件开发。有关详细信息,请参阅。
# 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