2015-11-05 30 views
2

this page,使用短耳不带升压应该是相当简单的,但我现在还不能编译任何文件与include看起来像任何一种:如何使用短耳独立在Xcode C++ 11不带升压

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

我已经把我的编译器使用C++ 11(它已经在做,虽然我没有从切换到gnu++11c++11),我已经把#define ASIO_STANDALONE各种包括我想之前。

是否有一些额外的工作需要访问c + + 11之外的Asio头?在编译过程中,我发现有file not found错误与上述任何尝试。

+0

仅仅因为你设置了一些标志和预处理器宏并不意味着这些头文件奇迹般的改变了位置。他们仍然和以前一样。 –

+0

@JoachimPileborg我明白,但标题在哪里?当我使用其他C++ 11标准库时,我不必做任何额外的事情。 Asio的特别之处在于您必须手动查找标题所在的位置?或者你是否说我必须从C++ 11本地环境之外手动添加这些头文件? – johnbakers

+1

我的意思是ASIO仍然是Boost的一部分,即使它不使用Boost,因此头文件仍然在'boost'子目录中,所以你需要'#include '。你仍然需要安装Boost。 –

回答

6

短耳可以在不升压被使用,如果满足以下条件:

  • 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,或者您可以在项目配置的标题搜索路径部分中指定自定义标题路径。
  • #define ASIO_STANDALONE之前包括Asio头。这个定义告诉Asio使用C++ 11标准库的特性来处理错误代码,共享指针等,而不是使用Boost的polyfills。