1

我想在我的 iOS 项目中使用 Boost::Geometry 库。经过一天的几次尝试后,我来到了 SO。

由于 Geometry 是一个仅限 Header 的库,因此我认为不需要二进制文件,只需添加 *.hpp 文件就足够了。我对吗?

这是我所做的:

  1. 下载 Boost 1.53.0
  2. boost将根文件夹提取到libs/boost文件夹。所以 boost root 的路径是 project/libs/boost/boost (其中包含geometry
  3. 向 xcode 添加了新的 boost 文件夹
  4. 在构建/目标中,设置Header Search Path
    • “$(PROJECT_NAME)/../libs/boost”
    • "$(PROJECT_NAME)/libs/boost"
    • “$(PROJECT_NAME)/../libs/boost/boost”
    • "$(PROJECT_NAME)/libs/boost/boost"
  5. 得到以下编译器错误:
    • #include "boost/[geometry]/geometry.hpp"抛出“未找到 boost/geometry.hpp 文件”
    • #include "geometry.hpp"在geometry.hpp 中抛出错误“boost/geometry/core/cs.hpp file not found”

这是我的项目结构:

proj
 |--- classes
 |--- ios
 |--- libs
 |      |--- cocos2dx
 |      |--- CocosDenshion
 |      +--- boost
 +--- res

我错过了什么?

4

2 回答 2

2

我现在不仅成功地集成了 Boost::Geometry,而且还集成了整个 Boost 库。以下是要遵循的正确步骤:

  • 下载 Boost 1.53.0
  • 将 boost 根文件夹提取到 libs/boost 文件夹。所以 boost root 的路径是 project/libs/boost/boost (它不需要是项目的一部分,它可以在其他地方。Boost 文件不会被添加到 xcode,但会通过正确设置 Header Search Path 来引用)
  • 在 build / target 中,将 Header Search Path 设置为boost文件夹,在我的情况下,$(PROJECT_NAME)/../../libs/boost
  • 然后可以像这样添加标题#include <boost/geometry.hpp>

由于 Boost::Geometry 是一个仅 Header 的包,因此可以正常工作。但是对于需要编译的包,要采用不同的方法。

于 2013-05-01T06:10:08.930 回答
1

虽然您可以将整个 boost 存储库添加为项目的可接受答案,但这将需要很长时间来编译。

更健壮和解耦的方法是使用静态库。

为此,您可以使用 ofxiOSBoost 静态库和头文件:

(适用于 iOS 6、iOS 7、iOS 8 + )

Boost 1.57.0 libc++ (c++11)、libstdc++ 的发布,还包括构建脚本

https://github.com/danoli3/ofxiOSBoost

于 2015-02-03T03:47:28.623 回答