【发布时间】:2011-09-06 13:26:27
【问题描述】:
实际上有一些关于人们尝试为 Windows CE 构建 Boost 库的信息,但没有人报告成功,甚至没有给出这样做所需的步骤。对于两个最新版本(1.46 和 1.47),发行说明提到他们的一个测试编译器是“Visual C++, Windows Mobile 5, with STLport: 9.0”,这似乎意味着已经取得成功(作为旁注给出的编译器很有趣,因为我能够下载的最新 STLPort 是 5.2.1。我错过了什么吗?)。
我发现的帖子似乎围绕此处包含的文件:http://www.boost.org/development/tests/trunk/VeecoFTC.html。问题是,老实说,我不知道如何使用它。我能够为 Windows CE 构建 STLPort,但是按照 Boost 入门指南 (http://www.boost.org/doc/libs/1_47_0/more/getting_started/windows.html) 我被困在 Boost.Build 阶段。我是否需要在此时进行配置才能为 CE 编译?我只是不知道要采取什么步骤,希望得到一些指导。
这些是我到目前为止所遵循的步骤:
- 为 Windows CE 编译 STLPort(文档相当不错,这并没有证明太难)。
- 根据入门指南安装 Boost.Build。这一步我有点不放心,因为 bootstrap.bat 文件似乎是特定于“ntx86”和“ntx86_64”的。我已经搞砸了吗?
在这一点上,假设我做的事情正确,我需要用类似的东西来运行 b2
b2 --build-dir=build-directory toolset=toolset-name --build-type=complete stage
我假设我的构建目录是我用于 Boost.Build 的前缀,构建类型和阶段将保持不变,但我不知道要使用什么工具集名称。 VeecoFTC 文件有多个 msvc 和 stlport 条目。我删除了与“wm5”无关的两个条目,但是当我使用以下命令编译时
b2 --build-dir=C:\boost-build toolset=msvc --build-type=complete stage
我收到一堆错误,例如:
compile-c-c++ C:\boost-build\boost\bin.v2\libs\regex\build\msvc-9.0~wm5~stlport5.2\debug\threading-multi\has_icu_test.obj
The system cannot find the path specified.
确实,该文件不存在,但 has_icu_test.obj.rsp 存在那里。我错过了什么吗?我是否走在正确的轨道上?
更新:
由于我无法让 Boost.Build 工作,并且在 Boost.Build 邮件列表上没有得到任何爱,我开始尝试为 Boost 使用 CMake 构建系统:http://gitorious.org/boost/cmake。我将它与 CEgcc 结合使用(我对 Linux 比对 Windows 更熟悉),我遇到了以下错误:
boost/config/requires_threads.hpp:47:5: error: #error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
-mthreads 是 C 和 CXX 标志的一部分——问题是 BOOST_PLATFORM_CONFIG 不是由 boost/config/select_platform_config.hpp 定义的。这应该为 Windows CE 定义什么?我认为它应该是 boost/config/platform/win32.hpp(然后定义 BOOST_HAS_WINTHREADS,这将解决上述错误)。当 select_platform_config.hpp 似乎无法处理 Windows CE 案例时,发行说明如何声称这是有效的?如果 BOOST_PLATFORM_CONFIG 确实需要是 boost/config/platform/win32.hpp,那么我需要定义 _WIN32、WIN32 或 WIN32。我的第一反应是这些都不应该用于为 CE 编译。此外,VeecoFTC 文件不包含任何这些。 IT 是如何工作的?
【问题讨论】:
-
你真的使用过任何需要编译的 Boost 库吗? Boost 中有很多有用的库不需要构建。
-
对,你实际使用了 boost 的哪些部分?我个人只是将 boost 头文件用于 STATIC_ASSERT 和 boost::mpl 等标准功能,这些东西在 WinCE/VC++ 中运行良好。 Boost 是一个庞大的库集合;当然你不需要全部编译成功。
-
关于“Visual C++, Windows Mobile 5, with STLport: 9.0”, 这是VC++ 9, STLport 交叉编译为WM5。是的,那样看起来很有趣。
标签: c++ boost windows-ce