Mac Xcode配置boost库编写C++程序

安装boost

这里先确保boost库安装成功,能正常使用。

Mac下安装boost库有两种方式,编译源码homebrew
不知什么原因,手动编译源码失败:

...failed darwin.compile.c++ 
...failed updating 432 targets... 
...skipped 334 targets... 
...updated 31 targets... 

所以推荐使用homebrew的方式,include文件、lib文件一步到位:

brew install boost 

默认安装位置是/usr/local/Cellar/boost/1.72.0

验证boost

下面测试boost环境是否正确搭建。

新建一个xcode命令行项目,点项目文件进入配置页面:
Mac Xcode配置boost库编写C++程序_第1张图片
在header search paths里添加/usr/local/Cellar/boost/1.72.0/include
Mac Xcode配置boost库编写C++程序_第2张图片

不包含库的例子

main.cpp里写如下测试代码:

#include 
#include 

int main(int argc, const char * argv[]) {
    
    printf("Please input any number:");
    using namespace boost::lambda;
    typedef std::istream_iterator<int> in;
    
    std::for_each(
                  in(std::cin), in(), std::cout << (_1 * 3) << " " );
    
    return 0;
}

编译通过,代码已经可以运行了。

包含库的例子

上面例子中,仅仅指定了头文件路径即可。但也有一部分需要依赖指定lib库才能使用,比如下面使用正则表达式的例子:

#include 
#include 

int main(int argc, const char * argv[]) {
    std::string   str = "2013-08-15";
    boost::regex  rex("(?[0-9]{4}).*(?[0-9]{2}).*(?[0-9]{2})");
    boost::smatch res;
    
    std::string::const_iterator begin = str.begin();
    std::string::const_iterator end   = str.end();
    
    if (boost::regex_search(begin, end, res, rex))
    {
        std::cout << "Day:   " << res ["day"] << std::endl
        << "Month: " << res ["month"] << std::endl
        << "Year:  " << res ["year"] << std::endl;
    }
}

需要在Build Setings - Other linker flags 添加 /usr/local/Cellar/boost/1.72.0/lib/libboost_regex.a
Mac Xcode配置boost库编写C++程序_第3张图片
即可编译通过。

你可能感兴趣的:(运维)