如何在没有Boost的情况下在Xcode C ++ 11中使用Asio Standalone

时间:2015-11-05 12:05:19

标签: c++ xcode c++11 boost-asio

根据this page,使用没有Boost的Asio应该相当简单,但我仍然无法编译任何类似include的文件:

#include <asio>
#include <asio.hpp>
#include <asio/version.hpp>

我已经将我的编译器设置为使用c ++ 11(它已经在做了,虽然我确实从gnu++11切换到c++11),并且我放置了#define ASIO_STANDALONE 之前各种包括我正在尝试。

除此之外,是否还需要一些额外的工作来访问c ++ 11 Asio标头?在上述任何尝试的编译过程中,我只会遇到file not found错误。

1 个答案:

答案 0 :(得分:6)

如果满足以下条件,则可以在没有Boost的情况下使用Asio:

  • C ++ 11(或更高版本)编译模式下的C ++ 11(或更高版本)编译器。具体如何启用此模式因编译器而异。对于GCC / clang,请使用-std=c++11标志。对于Xcode,在项目设置中将C ++语言方言设置为C ++ 11或更高版本
  • 从think-async.com 下载Asio标头。 Asio不是标准库的一部分(尚未)。它与Boost捆绑在一起,可以从作者网站单独获得。如何将Asio添加到包含路径中会因编译器而异。对于GCC / clang,请使用-I/path/to/asio或将Asio标头放在/ use / local / include中。 Xcode还将读取/ usr / local / include,或者您可以在项目配置的标题搜索路径部分中指定自定义标题路径。
  • 在包含Asio标头之前,
  • #define ASIO_STANDALONE 。这个定义告诉Asio使用C ++ 11标准库功能来处理错误代码,共享指针等,而不是使用Boost的polyfills。