C++ 我可以添加Boost-source+;我自己(开源)项目的头文件?
Boost许可证是否允许只将我需要的东西的源代码添加到我的项目中(当然还有许可证?)。我找不到任何“描述性”确认。我会有单独的Include/boost和Source/boost目录,以便于访问 PS:鉴于boost::filesystem将进入C++0x-TR2,而lambda、regex和其他东西已经进入C++0x-TR1,我看不出有任何理由与realpath、getcwd等C函数进行交互。不管怎样,它们都不好用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 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