如何在没有Boost的Xcode C++ 11中使用Asio standalone

joh*_*ers 2 c++ xcode boost-asio c++11

根据这个页面,使用没有Boost的Asio应该是相当简单的,但我仍然无法编译任何include看起来像这些任何文件的文件:

#include <asio>
#include <asio.hpp>
#include <asio/version.hpp>
Run Code Online (Sandbox Code Playgroud)

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

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

zap*_*oyd 6

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

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