我正在尝试在Boost中使用bcp工具来提取要在我的项目中使用的标题/库的子集。
我也想使用一个自定义的命名空间,这个自定义的命名空间是由bcp提供的,但是生成的代码需要被编译,而这不是那么直截了当。
我会想到一个简单的
./dist/bin/bcp --namespace=myboost build filesystem ../myboost
足以产生一组可以build立“文件系统”库的文件,但似乎还有一些问题正在不断出现。
我已经阅读了所有可以find的networking上的相关post,但没有一个提出了可行的解决scheme。
我遵循的步骤和相应的错误消息在下面详述。
解压boost 1.56.0 tarball之后,我做了以下工作:
./bootstrap.sh ./b2 tools/bcp mkdir ../myboost ./dist/bin/bcp --namespace=myboost build filesystem ../myboost
复制到../myboost中的文件不包含bootstrap.sh,b2,bjam或其他* .jam文件,这些文件似乎是“构build”目标应包含的东西,对吧?
其他来源(包括stackoverflowpost)build议从原来的提升位置复制这些文件:
cp bootstrap.sh boost-build.jam boostcpp.jam ../myboost cd ../myboost ./bootstrap.sh
这然后build立b2和bjam好的。
当运行b2时,事情会崩溃:
./b2 /work/approved-osslibs/boost/boost-1.56.0/myboost/tools/build/src/build /project.jam:262: in find-jamfile from module project error: Unable to load Jamfile. error: Could not find a Jamfile in directory 'tools/inspect/build'. error: Attempted to find it with pattern '[Bb]uild.jam [Jj]amfile.v2 [Jj]amfile [Jj]amfile.jam'. error: Please consult the documentation at 'http://www.boost.org'. <error backtrace lines snipped>
所以这意味着我的“构build”工具依赖于“检查”,所以我们回头复制:
cd ../boost_1_56_0 ./dist/bin/bcp --namespace=myboost inspect ../myboost cd ../myboost ./b2
这会导致错误:
/work/myboost/tools/build/src/build/project.jam:262: in find-jamfile from module project error: Unable to load Jamfile. error: Could not find a Jamfile in directory 'libs/wave/tool/build'. error: Attempted to find it with pattern '[Bb]uild.jam [Jj]amfile.v2 [Jj]amfile [Jj]amfile.jam'. error: Please consult the documentation at 'http://www.boost.org'. <error backtrace lines snipped>
所以这意味着“build设”也取决于波…
cd ../boost_1_56_0 ./dist/bin/bcp --namespace=myboost wave ../myboost cd ../myboost ./b2
在哪一点我遇到这个错误:
/work/myboost/tools/build/src/build/targets.jam:397: in find-really *** argument error * rule project.is-registered-id ( id ) * called with: ( ) * missing argument id /work/myboost/tools/build/src/build/project.jam:600:see definition of rule 'project.is-registered-id' being called <error backtrace lines snipped>
我发现这个特定的错误与在这个票据中引用的boost文件系统库有关,但是应该已经被修复了,所以我不期望在最新版本的Boost 1.56.0中看到它。
到底是怎么回事?
为什么不能为一个boost库创build一个可执行的构build系统?
为什么build立依赖于检查和波,这将增加更多的标题提取“myboost”比应该是必要的?
任何帮助这个问题将不胜感激。
当我今天用Boost 1.64(我在MS Windows下用MSVC编译)时遇到了一些问题。 顺便指点一下,顺便说一下。
bootstrap.bat
和b2 -j 8 tools\bcp
开始。 (在这里,以及下面,将同时运行的作业数替换为8
)。 .\dist\bin\bcp
,我发现我必须在我的命令行中包含tools\build\src
和libs\config\checks\architecture
,以便以后的构建工作。 bootstrap.bat
, boost-build.jam
和boostcpp.jam
到我的复制 – 提升目录。 bcp
的那个目录),否则构建会以某种方式结束。 之后,切换到我的复制 – 提升目录并运行bootstrap.bat
允许我创建Boost的精简版,并更改了顶级命名空间。
b2 -j 8 toolset=msvc-10.0 threading=multi link=shared address-model=32 variant=debug
b2 -j 8 toolset=msvc-10.0 threading=multi link=shared address-model=32 variant=release
move stage\lib lib32-msvc-10.0